summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYRIGHT.txt2
-rw-r--r--DONORS.md78
-rw-r--r--core/bind/core_bind.cpp15
-rw-r--r--core/bind/core_bind.h2
-rw-r--r--core/core_string_names.cpp47
-rw-r--r--core/dvector.h12
-rw-r--r--core/func_ref.cpp5
-rw-r--r--core/image.cpp12
-rw-r--r--core/io/file_access_compressed.cpp35
-rw-r--r--core/io/file_access_zip.cpp89
-rw-r--r--core/io/logger.cpp13
-rw-r--r--core/io/marshalls.cpp5
-rw-r--r--core/io/packet_peer.cpp7
-rw-r--r--core/io/packet_peer_udp.cpp13
-rw-r--r--core/io/resource_format_binary.cpp11
-rw-r--r--core/io/resource_loader.h1
-rw-r--r--core/io/resource_saver.h2
-rw-r--r--core/io/stream_peer_tcp.cpp11
-rw-r--r--core/io/tcp_server.cpp5
-rw-r--r--core/math/expression.cpp14
-rw-r--r--core/math/expression.h4
-rw-r--r--core/math/plane.h5
-rw-r--r--core/math/quat.h28
-rw-r--r--core/math/random_number_generator.cpp3
-rw-r--r--core/math/random_number_generator.h7
-rw-r--r--core/message_queue.cpp2
-rw-r--r--core/object.cpp16
-rw-r--r--core/os/dir_access.cpp12
-rw-r--r--core/os/main_loop.cpp1
-rw-r--r--core/os/main_loop.h1
-rw-r--r--core/os/os.h4
-rw-r--r--core/project_settings.cpp15
-rw-r--r--core/project_settings.h2
-rw-r--r--core/reference.cpp4
-rw-r--r--core/script_language.h1
-rw-r--r--core/ustring.h2
-rw-r--r--core/variant.cpp12
-rw-r--r--core/variant_op.cpp4
-rw-r--r--core/variant_parser.h3
-rw-r--r--doc/classes/@GDScript.xml26
-rw-r--r--doc/classes/AStar.xml43
-rw-r--r--doc/classes/AnimationPlayer.xml6
-rw-r--r--doc/classes/Array.xml8
-rw-r--r--doc/classes/ArrayMesh.xml6
-rw-r--r--doc/classes/AudioServer.xml9
-rw-r--r--doc/classes/AudioStreamSample.xml3
-rw-r--r--doc/classes/ButtonGroup.xml13
-rw-r--r--doc/classes/CPUParticles.xml6
-rw-r--r--doc/classes/CPUParticles2D.xml6
-rw-r--r--doc/classes/CanvasItem.xml2
-rw-r--r--doc/classes/Color.xml43
-rw-r--r--doc/classes/ColorPicker.xml30
-rw-r--r--doc/classes/ConvexPolygonShape2D.xml2
-rw-r--r--doc/classes/EditorImportPlugin.xml2
-rw-r--r--doc/classes/EditorScenePostImport.xml2
-rw-r--r--doc/classes/Environment.xml2
-rw-r--r--doc/classes/Generic6DOFJoint.xml2
-rw-r--r--doc/classes/HTTPClient.xml14
-rw-r--r--doc/classes/MainLoop.xml2
-rw-r--r--doc/classes/MenuButton.xml5
-rw-r--r--doc/classes/MeshDataTool.xml6
-rw-r--r--doc/classes/OS.xml24
-rw-r--r--doc/classes/Object.xml3
-rw-r--r--doc/classes/ProjectSettings.xml6
-rw-r--r--doc/classes/RandomNumberGenerator.xml23
-rw-r--r--doc/classes/ScriptCreateDialog.xml6
-rw-r--r--doc/classes/TextEdit.xml4
-rw-r--r--doc/classes/Theme.xml6
-rw-r--r--doc/classes/VisualServer.xml4
-rw-r--r--doc/classes/WorldEnvironment.xml2
-rwxr-xr-xdoc/tools/makerst.py2
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp37
-rw-r--r--drivers/coreaudio/audio_driver_coreaudio.cpp31
-rw-r--r--drivers/coremidi/core_midi.cpp6
-rw-r--r--drivers/dummy/rasterizer_dummy.h3
-rw-r--r--drivers/gles2/rasterizer_scene_gles2.cpp42
-rw-r--r--drivers/gles2/rasterizer_scene_gles2.h53
-rw-r--r--drivers/gles2/rasterizer_storage_gles2.h150
-rw-r--r--drivers/gles2/shader_compiler_gles2.cpp6
-rw-r--r--drivers/gles2/shader_gles2.cpp2
-rw-r--r--drivers/gles2/shaders/scene.glsl9
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp4
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h162
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp2
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h228
-rw-r--r--drivers/gles3/shader_compiler_gles3.cpp4
-rw-r--r--drivers/gles3/shaders/canvas.glsl6
-rw-r--r--drivers/gles3/shaders/effect_blur.glsl3
-rw-r--r--drivers/gles3/shaders/scene.glsl7
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp47
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.cpp13
-rw-r--r--drivers/unix/file_access_unix.cpp9
-rw-r--r--drivers/unix/net_socket_posix.cpp8
-rw-r--r--drivers/wasapi/audio_driver_wasapi.h22
-rw-r--r--drivers/windows/file_access_windows.cpp9
-rw-r--r--drivers/windows/thread_windows.cpp5
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.cpp38
-rw-r--r--editor/code_editor.cpp43
-rw-r--r--editor/code_editor.h2
-rw-r--r--editor/collada/collada.h41
-rw-r--r--editor/create_dialog.cpp7
-rw-r--r--editor/dependency_editor.cpp15
-rw-r--r--editor/dependency_editor.h2
-rw-r--r--editor/editor_audio_buses.cpp40
-rw-r--r--editor/editor_audio_buses.h4
-rw-r--r--editor/editor_export.cpp33
-rw-r--r--editor/editor_export.h7
-rw-r--r--editor/editor_file_dialog.cpp12
-rw-r--r--editor/editor_file_dialog.h1
-rw-r--r--editor/editor_folding.cpp32
-rw-r--r--editor/editor_help_search.cpp31
-rw-r--r--editor/editor_inspector.cpp22
-rw-r--r--editor/editor_node.cpp95
-rw-r--r--editor/editor_node.h6
-rw-r--r--editor/editor_plugin.cpp10
-rw-r--r--editor/editor_properties.cpp43
-rw-r--r--editor/editor_properties.h2
-rw-r--r--editor/editor_properties_array_dict.cpp233
-rw-r--r--editor/editor_properties_array_dict.h5
-rw-r--r--editor/editor_resource_preview.cpp4
-rw-r--r--editor/editor_sectioned_inspector.cpp15
-rw-r--r--editor/editor_settings.cpp154
-rw-r--r--editor/editor_settings.h32
-rw-r--r--editor/editor_spin_slider.cpp8
-rw-r--r--editor/editor_spin_slider.h1
-rw-r--r--editor/filesystem_dock.cpp23
-rw-r--r--editor/filesystem_dock.h7
-rw-r--r--editor/find_in_files.cpp9
-rw-r--r--editor/find_in_files.h1
-rw-r--r--editor/groups_editor.cpp2
-rw-r--r--editor/import/editor_import_collada.cpp9
-rw-r--r--editor/import/editor_scene_importer_gltf.cpp11
-rw-r--r--editor/import/editor_scene_importer_gltf.h28
-rw-r--r--editor/import/resource_importer_wav.cpp14
-rw-r--r--editor/inspector_dock.cpp12
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.cpp54
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.h6
-rw-r--r--editor/plugins/animation_blend_tree_editor_plugin.h6
-rw-r--r--editor/plugins/animation_state_machine_editor.cpp2
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp10
-rw-r--r--editor/plugins/collision_polygon_editor_plugin.cpp4
-rw-r--r--editor/plugins/item_list_editor_plugin.cpp4
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.cpp424
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.h73
-rw-r--r--editor/plugins/path_2d_editor_plugin.cpp94
-rw-r--r--editor/plugins/path_2d_editor_plugin.h2
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.cpp310
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.h10
-rw-r--r--editor/plugins/script_editor_plugin.cpp50
-rw-r--r--editor/plugins/script_text_editor.cpp6
-rw-r--r--editor/plugins/shader_editor_plugin.cpp18
-rw-r--r--editor/plugins/shader_editor_plugin.h4
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp4
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp2
-rw-r--r--editor/plugins/texture_region_editor_plugin.cpp151
-rw-r--r--editor/plugins/texture_region_editor_plugin.h11
-rw-r--r--editor/plugins/tile_map_editor_plugin.cpp2
-rw-r--r--editor/plugins/tile_set_editor_plugin.cpp504
-rw-r--r--editor/plugins/tile_set_editor_plugin.h14
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp28
-rw-r--r--editor/project_export.cpp56
-rw-r--r--editor/project_export.h8
-rw-r--r--editor/project_manager.cpp87
-rw-r--r--editor/project_manager.h6
-rw-r--r--editor/project_settings_editor.cpp8
-rw-r--r--editor/settings_config_dialog.cpp7
-rw-r--r--editor/translations/af.po373
-rw-r--r--editor/translations/ar.po422
-rw-r--r--editor/translations/bg.po382
-rw-r--r--editor/translations/bn.po411
-rw-r--r--editor/translations/ca.po424
-rw-r--r--editor/translations/cs.po829
-rw-r--r--editor/translations/da.po744
-rw-r--r--editor/translations/de.po673
-rw-r--r--editor/translations/de_CH.po364
-rw-r--r--editor/translations/editor.pot300
-rw-r--r--editor/translations/el.po421
-rw-r--r--editor/translations/es.po553
-rw-r--r--editor/translations/es_AR.po698
-rw-r--r--editor/translations/fa.po387
-rw-r--r--editor/translations/fi.po677
-rw-r--r--editor/translations/fr.po2339
-rw-r--r--editor/translations/he.po376
-rw-r--r--editor/translations/hi.po365
-rw-r--r--editor/translations/hu.po440
-rw-r--r--editor/translations/id.po397
-rw-r--r--editor/translations/is.po321
-rw-r--r--editor/translations/it.po421
-rw-r--r--editor/translations/ja.po727
-rw-r--r--editor/translations/ka.po368
-rw-r--r--editor/translations/ko.po667
-rw-r--r--editor/translations/lt.po369
-rw-r--r--editor/translations/lv.po379
-rw-r--r--editor/translations/ml.po308
-rw-r--r--editor/translations/ms.po310
-rw-r--r--editor/translations/nb.po398
-rw-r--r--editor/translations/nl.po653
-rw-r--r--editor/translations/pl.po1254
-rw-r--r--editor/translations/pr.po353
-rw-r--r--editor/translations/pt_BR.po458
-rw-r--r--editor/translations/pt_PT.po730
-rw-r--r--editor/translations/ro.po409
-rw-r--r--editor/translations/ru.po851
-rw-r--r--editor/translations/si.po309
-rw-r--r--editor/translations/sk.po346
-rw-r--r--editor/translations/sl.po392
-rw-r--r--editor/translations/sr_Cyrl.po399
-rw-r--r--editor/translations/sr_Latn.po340
-rw-r--r--editor/translations/sv.po396
-rw-r--r--editor/translations/ta.po314
-rw-r--r--editor/translations/th.po425
-rw-r--r--editor/translations/tr.po427
-rw-r--r--editor/translations/uk.po690
-rw-r--r--editor/translations/ur_PK.po331
-rw-r--r--editor/translations/vi.po379
-rw-r--r--editor/translations/zh_CN.po694
-rw-r--r--editor/translations/zh_HK.po386
-rw-r--r--editor/translations/zh_TW.po385
-rw-r--r--main/main.cpp11
-rw-r--r--main/tests/test_io.cpp133
-rw-r--r--main/tests/test_main.cpp7
-rw-r--r--main/tests/test_shader_lang.cpp2
-rw-r--r--methods.py4
-rw-r--r--misc/dist/document_icon.svg12
-rw-r--r--misc/dist/document_icons/gdscript.svg1
-rw-r--r--misc/dist/document_icons/gdscript_extra_small.svg1
-rw-r--r--misc/dist/document_icons/gdscript_small.svg1
-rw-r--r--misc/dist/document_icons/project.svg1
-rw-r--r--misc/dist/document_icons/project_extra_small.svg1
-rw-r--r--misc/dist/document_icons/project_small.svg1
-rw-r--r--misc/dist/document_icons/resource.svg1
-rw-r--r--misc/dist/document_icons/resource_extra_small.svg1
-rw-r--r--misc/dist/document_icons/resource_small.svg1
-rw-r--r--misc/dist/document_icons/scene.svg1
-rw-r--r--misc/dist/document_icons/scene_extra_small.svg1
-rw-r--r--misc/dist/document_icons/scene_small.svg1
-rw-r--r--misc/dist/linux/godot.62
-rwxr-xr-xmisc/dist/osx_tools.app/Contents/Info.plist59
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Document.icnsbin143464 -> 0 bytes
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/GDScript.icnsbin0 -> 185973 bytes
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Project.icnsbin0 -> 208221 bytes
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Resource.icnsbin0 -> 176973 bytes
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Scene.icnsbin0 -> 150612 bytes
-rw-r--r--modules/bullet/bullet_physics_server.cpp16
-rw-r--r--modules/bullet/bullet_physics_server.h3
-rw-r--r--modules/bullet/generic_6dof_joint_bullet.cpp8
-rw-r--r--modules/bullet/generic_6dof_joint_bullet.h3
-rw-r--r--modules/bullet/godot_result_callbacks.cpp8
-rw-r--r--modules/bullet/shape_bullet.cpp57
-rw-r--r--modules/csg/csg_shape.cpp15
-rw-r--r--modules/csg/csg_shape.h1
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp4
-rw-r--r--modules/gdnative/nativescript/nativescript.h1
-rw-r--r--modules/gdnative/pluginscript/pluginscript_script.h1
-rw-r--r--modules/gdscript/gdscript.cpp1
-rw-r--r--modules/gdscript/gdscript.h2
-rw-r--r--modules/gdscript/gdscript_compiler.cpp2
-rw-r--r--modules/gdscript/gdscript_functions.cpp14
-rw-r--r--modules/gdscript/gdscript_parser.cpp21
-rw-r--r--modules/mono/SCsub28
-rw-r--r--modules/mono/csharp_script.cpp619
-rw-r--r--modules/mono/csharp_script.h40
-rw-r--r--modules/mono/editor/godotsharp_editor.cpp8
-rw-r--r--modules/mono/editor/mono_bottom_panel.cpp10
-rw-r--r--modules/mono/glue/base_object_glue.cpp20
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp21
-rw-r--r--modules/mono/mono_gd/gd_mono_class.h7
-rw-r--r--modules/mono/mono_gd/gd_mono_field.cpp4
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.cpp25
-rw-r--r--modules/mono/mono_gd/gd_mono_method.cpp27
-rw-r--r--modules/mono/mono_gd/gd_mono_method.h5
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.cpp4
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.h91
-rw-r--r--modules/mono/signal_awaiter_utils.cpp8
-rw-r--r--modules/mono/utils/macros.h10
-rw-r--r--modules/mono/utils/mutex_utils.h (renamed from main/tests/test_io.h)42
-rw-r--r--modules/squish/config.py2
-rw-r--r--modules/squish/image_compress_squish.cpp4
-rw-r--r--modules/squish/image_compress_squish.h2
-rw-r--r--modules/squish/register_types.cpp7
-rw-r--r--modules/squish/register_types.h2
-rw-r--r--modules/visual_script/visual_script.cpp4
-rw-r--r--modules/visual_script/visual_script.h1
-rw-r--r--modules/visual_script/visual_script_editor.cpp1
-rw-r--r--modules/webp/SCsub2
-rw-r--r--platform/android/SCsub3
-rw-r--r--platform/android/android_native_app_glue.c437
-rw-r--r--platform/android/android_native_app_glue.h351
-rw-r--r--platform/android/audio_driver_jandroid.cpp4
-rw-r--r--platform/android/audio_driver_jandroid.h3
-rw-r--r--platform/android/dir_access_android.cpp190
-rw-r--r--platform/android/dir_access_android.h80
-rw-r--r--platform/android/dir_access_jandroid.cpp3
-rw-r--r--platform/android/dir_access_jandroid.h3
-rw-r--r--platform/android/export/export.cpp22
-rw-r--r--platform/android/file_access_jandroid.cpp4
-rw-r--r--platform/android/file_access_jandroid.h4
-rw-r--r--platform/android/godot_android.cpp937
-rw-r--r--platform/android/java_glue.cpp3
-rw-r--r--platform/android/java_glue.h3
-rw-r--r--platform/android/os_android.cpp19
-rw-r--r--platform/android/os_android.h6
-rw-r--r--platform/iphone/detect.py12
-rw-r--r--platform/iphone/export/export.cpp70
-rw-r--r--platform/iphone/gl_view.mm12
-rw-r--r--platform/iphone/os_iphone.cpp57
-rw-r--r--platform/javascript/audio_driver_javascript.cpp104
-rw-r--r--platform/javascript/audio_driver_javascript.h7
-rw-r--r--platform/javascript/detect.py1
-rw-r--r--platform/osx/export/export.cpp166
-rw-r--r--platform/osx/os_osx.h7
-rw-r--r--platform/osx/os_osx.mm39
-rw-r--r--platform/uwp/export/export.cpp2
-rw-r--r--platform/windows/detect.py4
-rw-r--r--platform/windows/os_windows.cpp38
-rw-r--r--platform/windows/os_windows.h1
-rw-r--r--platform/x11/os_x11.cpp10
-rw-r--r--scene/2d/area_2d.cpp4
-rw-r--r--scene/2d/canvas_item.cpp17
-rw-r--r--scene/2d/canvas_item.h2
-rw-r--r--scene/2d/cpu_particles_2d.cpp6
-rw-r--r--scene/2d/navigation_polygon.cpp10
-rw-r--r--scene/2d/parallax_background.cpp4
-rw-r--r--scene/2d/path_2d.cpp2
-rw-r--r--scene/2d/tile_map.cpp4
-rw-r--r--scene/3d/area.cpp4
-rw-r--r--scene/3d/cpu_particles.cpp18
-rw-r--r--scene/3d/listener.h2
-rw-r--r--scene/3d/path.cpp4
-rw-r--r--scene/3d/physics_joint.cpp16
-rw-r--r--scene/3d/physics_joint.h7
-rw-r--r--scene/3d/remote_transform.cpp36
-rw-r--r--scene/3d/soft_body.cpp2
-rw-r--r--scene/3d/sprite_3d.cpp4
-rw-r--r--scene/animation/animation_player.cpp12
-rw-r--r--scene/animation/animation_player.h1
-rw-r--r--scene/animation/animation_tree_player.cpp10
-rw-r--r--scene/animation/animation_tree_player.h2
-rw-r--r--scene/gui/base_button.cpp11
-rw-r--r--scene/gui/base_button.h1
-rw-r--r--scene/gui/color_picker.cpp59
-rw-r--r--scene/gui/color_picker.h3
-rw-r--r--scene/gui/control.cpp18
-rw-r--r--scene/gui/graph_edit.cpp4
-rw-r--r--scene/gui/line_edit.cpp16
-rw-r--r--scene/gui/line_edit.h1
-rw-r--r--scene/gui/menu_button.cpp19
-rw-r--r--scene/gui/menu_button.h3
-rw-r--r--scene/gui/rich_text_label.cpp39
-rw-r--r--scene/gui/rich_text_label.h1
-rw-r--r--scene/gui/spin_box.cpp34
-rw-r--r--scene/gui/spin_box.h4
-rw-r--r--scene/gui/split_container.cpp15
-rw-r--r--scene/gui/text_edit.cpp28
-rw-r--r--scene/gui/text_edit.h3
-rw-r--r--scene/main/scene_tree.cpp1
-rw-r--r--scene/main/viewport.cpp124
-rw-r--r--scene/main/viewport.h4
-rw-r--r--scene/register_scene_types.cpp6
-rw-r--r--scene/resources/audio_stream_sample.cpp7
-rw-r--r--scene/resources/audio_stream_sample.h3
-rw-r--r--scene/resources/default_theme/default_theme.cpp4
-rw-r--r--scene/resources/environment.cpp34
-rw-r--r--scene/resources/environment.h4
-rw-r--r--scene/resources/material.cpp61
-rw-r--r--scene/resources/material.h2
-rw-r--r--scene/resources/particles_material.cpp15
-rw-r--r--scene/resources/particles_material.h2
-rw-r--r--scene/resources/primitive_meshes.cpp44
-rw-r--r--scene/resources/surface_tool.cpp104
-rw-r--r--scene/resources/surface_tool.h1
-rw-r--r--scene/resources/texture.cpp22
-rw-r--r--scene/resources/theme.cpp408
-rw-r--r--scene/resources/theme.h8
-rw-r--r--scene/resources/tile_set.cpp47
-rw-r--r--scene/resources/tile_set.h4
-rw-r--r--servers/audio/audio_stream.cpp7
-rw-r--r--servers/audio/effects/audio_effect_record.cpp63
-rw-r--r--servers/audio/effects/audio_effect_record.h4
-rw-r--r--servers/audio_server.cpp33
-rw-r--r--servers/audio_server.h6
-rw-r--r--servers/physics/body_sw.cpp4
-rw-r--r--servers/physics/collision_object_sw.h4
-rw-r--r--servers/physics/physics_server_sw.h3
-rw-r--r--servers/physics_2d/body_2d_sw.cpp4
-rw-r--r--servers/physics_2d/collision_object_2d_sw.h4
-rw-r--r--servers/physics_server.h3
-rw-r--r--servers/visual/rasterizer.h2
-rw-r--r--servers/visual/shader_types.cpp5
-rw-r--r--servers/visual/visual_server_canvas.cpp6
-rw-r--r--servers/visual/visual_server_raster.h2
-rw-r--r--servers/visual/visual_server_wrap_mt.h2
-rw-r--r--servers/visual_server.cpp2
-rw-r--r--servers/visual_server.h2
-rw-r--r--thirdparty/README.md4
-rw-r--r--thirdparty/libwebp/src/dec/alphai_dec.h2
-rw-r--r--thirdparty/libwebp/src/dec/buffer_dec.c3
-rw-r--r--thirdparty/libwebp/src/dec/common_dec.h2
-rw-r--r--thirdparty/libwebp/src/dec/frame_dec.c9
-rw-r--r--thirdparty/libwebp/src/dec/idec_dec.c25
-rw-r--r--thirdparty/libwebp/src/dec/vp8_dec.h2
-rw-r--r--thirdparty/libwebp/src/dec/vp8i_dec.h4
-rw-r--r--thirdparty/libwebp/src/dec/vp8l_dec.c103
-rw-r--r--thirdparty/libwebp/src/dec/vp8li_dec.h2
-rw-r--r--thirdparty/libwebp/src/dec/webpi_dec.h2
-rw-r--r--thirdparty/libwebp/src/demux/demux.c2
-rw-r--r--thirdparty/libwebp/src/dsp/dsp.h6
-rw-r--r--thirdparty/libwebp/src/dsp/enc.c6
-rw-r--r--thirdparty/libwebp/src/dsp/enc_avx2.c21
-rw-r--r--thirdparty/libwebp/src/dsp/lossless.c2
-rw-r--r--thirdparty/libwebp/src/dsp/lossless.h14
-rw-r--r--thirdparty/libwebp/src/dsp/lossless_enc.c86
-rw-r--r--thirdparty/libwebp/src/dsp/lossless_enc_mips32.c79
-rw-r--r--thirdparty/libwebp/src/dsp/lossless_enc_sse2.c44
-rw-r--r--thirdparty/libwebp/src/dsp/msa_macro.h2
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler.c4
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler_mips32.c4
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler_mips_dsp_r2.c10
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler_msa.c7
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler_neon.c18
-rw-r--r--thirdparty/libwebp/src/dsp/rescaler_sse2.c35
-rw-r--r--thirdparty/libwebp/src/dsp/yuv.h2
-rw-r--r--thirdparty/libwebp/src/enc/analysis_enc.c2
-rw-r--r--thirdparty/libwebp/src/enc/backward_references_cost_enc.c2
-rw-r--r--thirdparty/libwebp/src/enc/backward_references_enc.c1
-rw-r--r--thirdparty/libwebp/src/enc/cost_enc.h2
-rw-r--r--thirdparty/libwebp/src/enc/delta_palettization_enc.c455
-rw-r--r--thirdparty/libwebp/src/enc/delta_palettization_enc.h25
-rw-r--r--thirdparty/libwebp/src/enc/histogram_enc.c196
-rw-r--r--thirdparty/libwebp/src/enc/histogram_enc.h10
-rw-r--r--thirdparty/libwebp/src/enc/iterator_enc.c2
-rw-r--r--thirdparty/libwebp/src/enc/picture_tools_enc.c41
-rw-r--r--thirdparty/libwebp/src/enc/vp8i_enc.h6
-rw-r--r--thirdparty/libwebp/src/enc/vp8l_enc.c17
-rw-r--r--thirdparty/libwebp/src/enc/vp8li_enc.h2
-rw-r--r--thirdparty/libwebp/src/mux/animi.h2
-rw-r--r--thirdparty/libwebp/src/mux/muxedit.c18
-rw-r--r--thirdparty/libwebp/src/mux/muxi.h18
-rw-r--r--thirdparty/libwebp/src/mux/muxinternal.c53
-rw-r--r--thirdparty/libwebp/src/mux/muxread.c61
-rw-r--r--thirdparty/libwebp/src/utils/bit_reader_inl_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/bit_reader_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/bit_writer_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/filters_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/quant_levels_dec_utils.c8
-rw-r--r--thirdparty/libwebp/src/utils/quant_levels_dec_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/quant_levels_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/random_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/rescaler_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/thread_utils.h2
-rw-r--r--thirdparty/libwebp/src/utils/utils.h2
-rw-r--r--thirdparty/libwebp/src/webp/decode.h2
-rw-r--r--thirdparty/libwebp/src/webp/demux.h2
-rw-r--r--thirdparty/libwebp/src/webp/encode.h2
-rw-r--r--thirdparty/libwebp/src/webp/format_constants.h2
-rw-r--r--thirdparty/libwebp/src/webp/mux.h2
-rw-r--r--thirdparty/libwebp/src/webp/mux_types.h2
-rw-r--r--thirdparty/libwebp/src/webp/types.h2
-rw-r--r--thirdparty/tinyexr/tinyexr.h253
459 files changed, 20002 insertions, 18662 deletions
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 894cd1a53a..2a1fe20477 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -382,7 +382,7 @@ License: Expat
Files: ./thirdparty/tinyexr/
Comment: TinyEXR
-Copyright: 2014-2017, Syoyo Fujita
+Copyright: 2014-2018, Syoyo Fujita
2002, Industrial Light & Magic, a division of Lucas Digital Ltd. LLC
License: BSD-3-clause
diff --git a/DONORS.md b/DONORS.md
index 2c9bb1eb73..ed14a4e8da 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -22,23 +22,30 @@ generous deed immortalized in the next stable release of Godot Engine.
## Mini sponsors
+ Alan Beauchamp
Andrew Dunai
+ Arda Erol
Brandon Lamb
Christian Uldall Pedersen
Christoph Woinke
- David Graham
GameDev.net
Hein-Pieter van Braam
- iDev.Network Studios
Jamal Alyafei
+ Javary Games
+ Jay Sistar
+ Justin Arnold
+ Kyle Szklenski
Leona Eden
Matthieu Huvé
+ Maxim Karsten
Mike King
Nathan Warden
Neal Gompa (Conan Kudo)
Patrick Aarstad
+ "Rainway "
Ruslan Mustakov
Slobodan Milnovic
+ StarFlare Software
Stephan Lanfermann
Stoney Meyerhoeffer
thechris
@@ -49,11 +56,14 @@ generous deed immortalized in the next stable release of Godot Engine.
Asdf
cheese65536
+ David Gehrig
K9Kraken
Manuele Finocchiaro
Nathanael Beisiegel
Officine Pixel S.n.c.
Retro Village
+ Valorware
+ Zashi
Zaven Muradyan
13MHz
@@ -61,18 +71,18 @@ generous deed immortalized in the next stable release of Godot Engine.
Andreas Schüle
Austen McRae
Daniel Lynn
- David Gehrig
Florian Breisch
Gary Oberbrunner
Jay Horton
Johannes Wuensch
+ Jon Woodward
Joshua Lesperance
+ Justo Delgado Baudí
Krzysztof Dluzniewski
- Kyle Szklenski
- Mohammad Taleb
Moonwards
+ Mored1984
+ paul gruenbacher
Paul LaMotte
- Ranoller
Sergey
Svenne Krap
Xananax
@@ -87,11 +97,11 @@ generous deed immortalized in the next stable release of Godot Engine.
David Churchill
Dean Harmon
John
- Justo Delgado Baudí
+ Krzysztof Jankowski
KTL
Laurence Bannister
Markus Wiesner
- paul gruenbacher
+ Nathan Lundquist
Rami
Robert Willes
Robin Arys
@@ -105,16 +115,21 @@ generous deed immortalized in the next stable release of Godot Engine.
Alessandra Pereyra
Alexey Dyadchenko
Amanda Haldy
+ Benjamin W Flint
Chau Siu Hung
Chris Brown
Chris Petrich
+ Christian Leth Jeppesen
+ Christopher
Cody Parker
+ ComicSads
D
Deadly Lampshade
E.G.
Eric
Eric Monson
Ethan Bennis
+ Eugenio Hugo Salgüero Jáñez
Fidget Sinner
flesk
G Barnes
@@ -122,24 +137,23 @@ generous deed immortalized in the next stable release of Godot Engine.
GGGames.org
Giovanni Solimeno
Guilherme Felipe de C. G. da Silva
- Hasen Judy
Heath Hayes
Jeppe Zapp
joe513
+ Jose Malheiro
Juraj Móza
- Justin Arnold
+ Klavdij Voncina
Leandro Voltolino
Marius Kamm
Marvin
- Nahuel Sacchetti
Nick Nikitin
- Pablo Cholaky
+ oziatek
Pete Goodwin
+ Ranoller
ray-tracer
Ruben Soares Luis
Sofox
Stoned Xander
- Trent McPheron
WytRabbit
Zachariah Gibbons
@@ -152,9 +166,8 @@ generous deed immortalized in the next stable release of Godot Engine.
Alder Stefano
Alessandro Senese
Alexander Koppe
- Anders Jensen-Urstad
+ Andreas Krampitz
Anthony Bongiovanni
- Arda Erol
Arthur S. Muszynski
Artur Barichello
Aubrey Falconer
@@ -163,9 +176,11 @@ generous deed immortalized in the next stable release of Godot Engine.
Bastian Böhm
Benedikt
Ben Vercammen
+ Bernd Jänichen
Blair Allen
Brandon
Bryan Stevenson
+ bugcaptor
Carl Winder
Carwyn Edwards
Casey Foote
@@ -176,42 +191,45 @@ generous deed immortalized in the next stable release of Godot Engine.
Daniel Johnson
Daniel Kaplan
DanielMaximiano
- David
David Cravens
David May
- Disktra
Dominik Wetzel
Duy Kevin Nguyen
Edward Herbert
Elias Nykrem
Eric Martini
+ Eric McCarthy
Eric Williams
- Eugenio Hugo Salgüero Jáñez
Fabian Becker
fengjiongmax
+ Florian Richer
Foomf
G3Dev sàrl
George Lesica
Gerrit Großkopf
Gilberto K. Otubo
+ Grant Clarke
Greg Olson
Guldoman
Heribert Hirth
Hunter Jones
ialex32x
+ Igor Buzatovic
Jahn Johansen
Jaime Ruiz-Borau Vizárraga
Jako Danar
Jeff Hungerford
+ Joan Fons
Joel Fivat
Johan Lindberg
Jonas Rudlang
Jonas Yamazaki
+ Jonathan G
Jonathan Martin
Jonathan Nieto
+ Jonathon
Jon Bonazza
Jon Sully
- Jose Malheiro
Josh 'Cheeseness' Bush
Juanfran
Juan Negrier
@@ -220,16 +238,17 @@ generous deed immortalized in the next stable release of Godot Engine.
Justin Luk
KC Chan
Kevin Boyer
- Kevin Kamper Meejach Petersen
- Klavdij Voncina
- Krzysztof Jankowski
- Krzysztof Sierszecki
+ Kevin van Rooijen
+ Klagsam
KsyTek Games
+ Kuan Cheang
+ kycho
Linus Lind Lundgren
Loreshaper Games
Luis Moraes
Macil
magodev
+ Major Haul
Malcolm
Martin Eigel
Matt Welke
@@ -251,10 +270,9 @@ generous deed immortalized in the next stable release of Godot Engine.
Niclas Eriksen
Nicolás Montaña
Nicolas SAN AGUSTIN
- Nik
- Noi Sek
Pan Ip
Pascal Grüter
+ Pat LaBine
Patrick Nafarrete
Paul E Hansen
Paul Gieske
@@ -265,12 +283,17 @@ generous deed immortalized in the next stable release of Godot Engine.
Pietro Vertechi
Piotr Kaczmarski
Prokhorenko Leonid
+ Psyagnostic
+ rayos
Rémi Verschelde
+ Ricardo Alcantara
Richman Stewart
Roger Burgess
Roger Smith
Roman Tinkov
Sasori Olkof
+ Sebastian Michailidis
+ Shane Spoor
Sootstone
Theo Cranmore
Thibault Barbaroux
@@ -279,15 +302,18 @@ generous deed immortalized in the next stable release of Godot Engine.
Thomas Kurz
tiansheng li
Tim
+ Tim Drumheller
Tom Larrow
+ Troy Austin
Trym Nilsen
- Tyggve Sollid
+ Tryggve Sollid
Tyler Stafos
UltyX
Vaiktorg
Victor
Viktor Ferenczi
waka nya
+ William Hogben
Wout Standaert
## Bronze donors
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 0032c43179..8641af84d9 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -378,12 +378,20 @@ bool _OS::get_borderless_window() const {
void _OS::set_ime_active(const bool p_active) {
- return OS::get_singleton()->set_ime_active(p_active);
+ OS::get_singleton()->set_ime_active(p_active);
}
void _OS::set_ime_position(const Point2 &p_pos) {
- return OS::get_singleton()->set_ime_position(p_pos);
+ OS::get_singleton()->set_ime_position(p_pos);
+}
+
+Point2 _OS::get_ime_selection() const {
+ return OS::get_singleton()->get_ime_selection();
+}
+
+String _OS::get_ime_text() const {
+ return OS::get_singleton()->get_ime_text();
}
void _OS::set_use_file_access_save_and_swap(bool p_enable) {
@@ -1134,7 +1142,10 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_window_per_pixel_transparency_enabled"), &_OS::get_window_per_pixel_transparency_enabled);
ClassDB::bind_method(D_METHOD("set_window_per_pixel_transparency_enabled", "enabled"), &_OS::set_window_per_pixel_transparency_enabled);
+ ClassDB::bind_method(D_METHOD("set_ime_active", "active"), &_OS::set_ime_active);
ClassDB::bind_method(D_METHOD("set_ime_position", "position"), &_OS::set_ime_position);
+ ClassDB::bind_method(D_METHOD("get_ime_selection"), &_OS::get_ime_selection);
+ ClassDB::bind_method(D_METHOD("get_ime_text"), &_OS::get_ime_text);
ClassDB::bind_method(D_METHOD("set_screen_orientation", "orientation"), &_OS::set_screen_orientation);
ClassDB::bind_method(D_METHOD("get_screen_orientation"), &_OS::get_screen_orientation);
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index 720b14bf56..4cdf09d522 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -195,6 +195,8 @@ public:
virtual void set_ime_active(const bool p_active);
virtual void set_ime_position(const Point2 &p_pos);
+ virtual Point2 get_ime_selection() const;
+ virtual String get_ime_text() const;
Error native_video_play(String p_path, float p_volume, String p_audio_track, String p_subtitle_track);
bool native_video_is_playing();
diff --git a/core/core_string_names.cpp b/core/core_string_names.cpp
index ba596f7f16..8a3fdade64 100644
--- a/core/core_string_names.cpp
+++ b/core/core_string_names.cpp
@@ -47,28 +47,27 @@ CoreStringNames::CoreStringNames() :
#ifdef TOOLS_ENABLED
_sections_unfolded(StaticCString::create("_sections_unfolded")),
#endif
- _custom_features(StaticCString::create("_custom_features")) {
-
- x = StaticCString::create("x");
- y = StaticCString::create("y");
- z = StaticCString::create("z");
- w = StaticCString::create("w");
- r = StaticCString::create("r");
- g = StaticCString::create("g");
- b = StaticCString::create("b");
- a = StaticCString::create("a");
- position = StaticCString::create("position");
- size = StaticCString::create("size");
- end = StaticCString::create("end");
- basis = StaticCString::create("basis");
- origin = StaticCString::create("origin");
- normal = StaticCString::create("normal");
- d = StaticCString::create("d");
- h = StaticCString::create("h");
- s = StaticCString::create("s");
- v = StaticCString::create("v");
- r8 = StaticCString::create("r8");
- g8 = StaticCString::create("g8");
- b8 = StaticCString::create("b8");
- a8 = StaticCString::create("a8");
+ _custom_features(StaticCString::create("_custom_features")),
+ x(StaticCString::create("x")),
+ y(StaticCString::create("y")),
+ z(StaticCString::create("z")),
+ w(StaticCString::create("w")),
+ r(StaticCString::create("r")),
+ g(StaticCString::create("g")),
+ b(StaticCString::create("b")),
+ a(StaticCString::create("a")),
+ position(StaticCString::create("position")),
+ size(StaticCString::create("size")),
+ end(StaticCString::create("end")),
+ basis(StaticCString::create("basis")),
+ origin(StaticCString::create("origin")),
+ normal(StaticCString::create("normal")),
+ d(StaticCString::create("d")),
+ h(StaticCString::create("h")),
+ s(StaticCString::create("s")),
+ v(StaticCString::create("v")),
+ r8(StaticCString::create("r8")),
+ g8(StaticCString::create("g8")),
+ b8(StaticCString::create("b8")),
+ a8(StaticCString::create("a8")) {
}
diff --git a/core/dvector.h b/core/dvector.h
index 2830c57ec0..9760dcbcad 100644
--- a/core/dvector.h
+++ b/core/dvector.h
@@ -56,12 +56,12 @@ struct MemoryPool {
Alloc *free_list;
- Alloc() {
- mem = NULL;
- lock = 0;
- pool_id = POOL_ALLOCATOR_INVALID_ID;
- size = 0;
- free_list = NULL;
+ Alloc() :
+ lock(0),
+ mem(NULL),
+ pool_id(POOL_ALLOCATOR_INVALID_ID),
+ size(0),
+ free_list(NULL) {
}
};
diff --git a/core/func_ref.cpp b/core/func_ref.cpp
index c707f1c4cb..d9d1a2b799 100644
--- a/core/func_ref.cpp
+++ b/core/func_ref.cpp
@@ -69,7 +69,6 @@ void FuncRef::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_function", "name"), &FuncRef::set_function);
}
-FuncRef::FuncRef() {
-
- id = 0;
+FuncRef::FuncRef() :
+ id(0) {
}
diff --git a/core/image.cpp b/core/image.cpp
index 698a0b0b98..dca8aedb8f 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -1931,7 +1931,8 @@ void Image::blit_rect(const Ref<Image> &p_src, const Rect2 &p_src_rect, const Po
if (clipped_src_rect.size.x <= 0 || clipped_src_rect.size.y <= 0)
return;
- Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest, clipped_src_rect.size));
+ Point2 src_underscan = Point2(MIN(0, p_src_rect.position.x), MIN(0, p_src_rect.position.y));
+ Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest - src_underscan, clipped_src_rect.size));
PoolVector<uint8_t>::Write wp = data.write();
uint8_t *dst_data_ptr = wp.ptr();
@@ -1985,7 +1986,8 @@ void Image::blit_rect_mask(const Ref<Image> &p_src, const Ref<Image> &p_mask, co
if (clipped_src_rect.size.x <= 0 || clipped_src_rect.size.y <= 0)
return;
- Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest, clipped_src_rect.size));
+ Point2 src_underscan = Point2(MIN(0, p_src_rect.position.x), MIN(0, p_src_rect.position.y));
+ Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest - src_underscan, clipped_src_rect.size));
PoolVector<uint8_t>::Write wp = data.write();
uint8_t *dst_data_ptr = wp.ptr();
@@ -2042,7 +2044,8 @@ void Image::blend_rect(const Ref<Image> &p_src, const Rect2 &p_src_rect, const P
if (clipped_src_rect.size.x <= 0 || clipped_src_rect.size.y <= 0)
return;
- Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest, clipped_src_rect.size));
+ Point2 src_underscan = Point2(MIN(0, p_src_rect.position.x), MIN(0, p_src_rect.position.y));
+ Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest - src_underscan, clipped_src_rect.size));
lock();
Ref<Image> img = p_src;
@@ -2096,7 +2099,8 @@ void Image::blend_rect_mask(const Ref<Image> &p_src, const Ref<Image> &p_mask, c
if (clipped_src_rect.size.x <= 0 || clipped_src_rect.size.y <= 0)
return;
- Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest, clipped_src_rect.size));
+ Point2 src_underscan = Point2(MIN(0, p_src_rect.position.x), MIN(0, p_src_rect.position.y));
+ Rect2i dest_rect = Rect2i(0, 0, width, height).clip(Rect2i(p_dest - src_underscan, clipped_src_rect.size));
lock();
Ref<Image> img = p_src;
diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp
index 645d97ae7e..a3633dc1f4 100644
--- a/core/io/file_access_compressed.cpp
+++ b/core/io/file_access_compressed.cpp
@@ -373,24 +373,23 @@ uint64_t FileAccessCompressed::_get_modified_time(const String &p_file) {
return 0;
}
-FileAccessCompressed::FileAccessCompressed() {
-
- f = NULL;
- magic = "GCMP";
- cmode = Compression::MODE_ZSTD;
- writing = false;
- write_ptr = 0;
- write_buffer_size = 0;
- write_max = 0;
- block_size = 0;
- read_eof = false;
- at_end = false;
- read_total = 0;
- read_ptr = NULL;
- read_block = 0;
- read_block_count = 0;
- read_block_size = 0;
- read_pos = 0;
+FileAccessCompressed::FileAccessCompressed() :
+ cmode(Compression::MODE_ZSTD),
+ writing(false),
+ write_ptr(0),
+ write_buffer_size(0),
+ write_max(0),
+ block_size(0),
+ read_eof(false),
+ at_end(false),
+ read_ptr(NULL),
+ read_block(0),
+ read_block_count(0),
+ read_block_size(0),
+ read_pos(0),
+ read_total(0),
+ magic("GCMP"),
+ f(NULL) {
}
FileAccessCompressed::~FileAccessCompressed() {
diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp
index 7b6385c3ff..d99cdf0d86 100644
--- a/core/io/file_access_zip.cpp
+++ b/core/io/file_access_zip.cpp
@@ -43,31 +43,31 @@ static void *godot_open(void *data, const char *p_fname, int mode) {
if (mode & ZLIB_FILEFUNC_MODE_WRITE) {
return NULL;
- };
+ }
FileAccess *f = (FileAccess *)data;
f->open(p_fname, FileAccess::READ);
return f->is_open() ? data : NULL;
-};
+}
static uLong godot_read(void *data, void *fdata, void *buf, uLong size) {
FileAccess *f = (FileAccess *)data;
f->get_buffer((uint8_t *)buf, size);
return size;
-};
+}
static uLong godot_write(voidpf opaque, voidpf stream, const void *buf, uLong size) {
return 0;
-};
+}
static long godot_tell(voidpf opaque, voidpf stream) {
FileAccess *f = (FileAccess *)opaque;
return f->get_position();
-};
+}
static long godot_seek(voidpf opaque, voidpf stream, uLong offset, int origin) {
@@ -84,36 +84,36 @@ static long godot_seek(voidpf opaque, voidpf stream, uLong offset, int origin) {
break;
default:
break;
- };
+ }
f->seek(pos);
return 0;
-};
+}
static int godot_close(voidpf opaque, voidpf stream) {
FileAccess *f = (FileAccess *)opaque;
f->close();
return 0;
-};
+}
static int godot_testerror(voidpf opaque, voidpf stream) {
FileAccess *f = (FileAccess *)opaque;
return f->get_error() != OK ? 1 : 0;
-};
+}
static voidpf godot_alloc(voidpf opaque, uInt items, uInt size) {
return memalloc(items * size);
-};
+}
static void godot_free(voidpf opaque, voidpf address) {
memfree(address);
-};
+}
-}; // extern "C"
+} // extern "C"
void ZipArchive::close_handle(unzFile p_file) const {
@@ -122,7 +122,7 @@ void ZipArchive::close_handle(unzFile p_file) const {
unzCloseCurrentFile(p_file);
unzClose(p_file);
memdelete(f);
-};
+}
unzFile ZipArchive::get_file_handle(String p_file) const {
@@ -155,10 +155,10 @@ unzFile ZipArchive::get_file_handle(String p_file) const {
unzClose(pkg);
ERR_FAIL_V(NULL);
- };
+ }
return pkg;
-};
+}
bool ZipArchive::try_open_pack(const String &p_path) {
@@ -215,36 +215,36 @@ bool ZipArchive::try_open_pack(const String &p_path) {
if ((i + 1) < gi.number_entry) {
unzGoToNextFile(zfile);
- };
- };
+ }
+ }
return true;
-};
+}
bool ZipArchive::file_exists(String p_name) const {
return files.has(p_name);
-};
+}
FileAccess *ZipArchive::get_file(const String &p_path, PackedData::PackedFile *p_file) {
return memnew(FileAccessZip(p_path, *p_file));
-};
+}
ZipArchive *ZipArchive::get_singleton() {
if (instance == NULL) {
instance = memnew(ZipArchive);
- };
+ }
return instance;
-};
+}
ZipArchive::ZipArchive() {
instance = this;
//fa_create_func = FileAccess::get_create_func();
-};
+}
ZipArchive::~ZipArchive() {
@@ -253,10 +253,10 @@ ZipArchive::~ZipArchive() {
FileAccess *f = (FileAccess *)unzGetOpaque(packages[i].zfile);
unzClose(packages[i].zfile);
memdelete(f);
- };
+ }
packages.clear();
-};
+}
Error FileAccessZip::_open(const String &p_path, int p_mode_flags) {
@@ -272,7 +272,7 @@ Error FileAccessZip::_open(const String &p_path, int p_mode_flags) {
ERR_FAIL_COND_V(err != UNZ_OK, FAILED);
return OK;
-};
+}
void FileAccessZip::close() {
@@ -283,50 +283,50 @@ void FileAccessZip::close() {
ERR_FAIL_COND(!arch);
arch->close_handle(zfile);
zfile = NULL;
-};
+}
bool FileAccessZip::is_open() const {
return zfile != NULL;
-};
+}
void FileAccessZip::seek(size_t p_position) {
ERR_FAIL_COND(!zfile);
unzSeekCurrentFile(zfile, p_position);
-};
+}
void FileAccessZip::seek_end(int64_t p_position) {
ERR_FAIL_COND(!zfile);
unzSeekCurrentFile(zfile, get_len() + p_position);
-};
+}
size_t FileAccessZip::get_position() const {
ERR_FAIL_COND_V(!zfile, 0);
return unztell(zfile);
-};
+}
size_t FileAccessZip::get_len() const {
ERR_FAIL_COND_V(!zfile, 0);
return file_info.uncompressed_size;
-};
+}
bool FileAccessZip::eof_reached() const {
ERR_FAIL_COND_V(!zfile, true);
return at_eof;
-};
+}
uint8_t FileAccessZip::get_8() const {
uint8_t ret = 0;
get_buffer(&ret, 1);
return ret;
-};
+}
int FileAccessZip::get_buffer(uint8_t *p_dst, int p_length) const {
@@ -339,20 +339,20 @@ int FileAccessZip::get_buffer(uint8_t *p_dst, int p_length) const {
if (read < p_length)
at_eof = true;
return read;
-};
+}
Error FileAccessZip::get_error() const {
if (!zfile) {
return ERR_UNCONFIGURED;
- };
+ }
if (eof_reached()) {
return ERR_FILE_EOF;
- };
+ }
return OK;
-};
+}
void FileAccessZip::flush() {
@@ -362,22 +362,21 @@ void FileAccessZip::flush() {
void FileAccessZip::store_8(uint8_t p_dest) {
ERR_FAIL();
-};
+}
bool FileAccessZip::file_exists(const String &p_name) {
return false;
-};
-
-FileAccessZip::FileAccessZip(const String &p_path, const PackedData::PackedFile &p_file) {
+}
- zfile = NULL;
+FileAccessZip::FileAccessZip(const String &p_path, const PackedData::PackedFile &p_file) :
+ zfile(NULL) {
_open(p_path, FileAccess::READ);
-};
+}
FileAccessZip::~FileAccessZip() {
close();
-};
+}
#endif
diff --git a/core/io/logger.cpp b/core/io/logger.cpp
index 01755c8ee9..3c4b4a1ac3 100644
--- a/core/io/logger.cpp
+++ b/core/io/logger.cpp
@@ -179,11 +179,10 @@ void RotatedFileLogger::rotate_file() {
file = FileAccess::open(base_path, FileAccess::WRITE);
}
-RotatedFileLogger::RotatedFileLogger(const String &p_base_path, int p_max_files) {
- file = NULL;
- base_path = p_base_path.simplify_path();
- max_files = p_max_files > 0 ? p_max_files : 1;
-
+RotatedFileLogger::RotatedFileLogger(const String &p_base_path, int p_max_files) :
+ base_path(p_base_path.simplify_path()),
+ max_files(p_max_files > 0 ? p_max_files : 1),
+ file(NULL) {
rotate_file();
}
@@ -240,8 +239,8 @@ void StdLogger::logv(const char *p_format, va_list p_list, bool p_err) {
StdLogger::~StdLogger() {}
-CompositeLogger::CompositeLogger(Vector<Logger *> p_loggers) {
- loggers = p_loggers;
+CompositeLogger::CompositeLogger(Vector<Logger *> p_loggers) :
+ loggers(p_loggers) {
}
void CompositeLogger::logv(const char *p_format, va_list p_list, bool p_err) {
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp
index 6338cee39d..c71903c94d 100644
--- a/core/io/marshalls.cpp
+++ b/core/io/marshalls.cpp
@@ -55,9 +55,8 @@ ObjectID EncodedObjectAsID::get_object_id() const {
return id;
}
-EncodedObjectAsID::EncodedObjectAsID() {
-
- id = 0;
+EncodedObjectAsID::EncodedObjectAsID() :
+ id(0) {
}
#define ENCODE_MASK 0xFF
diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp
index b6dd4eaf6f..aadcca01d5 100644
--- a/core/io/packet_peer.cpp
+++ b/core/io/packet_peer.cpp
@@ -35,10 +35,9 @@
/* helpers / binders */
-PacketPeer::PacketPeer() {
-
- allow_object_decoding = false;
- last_get_error = OK;
+PacketPeer::PacketPeer() :
+ last_get_error(OK),
+ allow_object_decoding(false) {
}
void PacketPeer::set_allow_object_decoding(bool p_enable) {
diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp
index d33ba6f855..2e916d6a48 100644
--- a/core/io/packet_peer_udp.cpp
+++ b/core/io/packet_peer_udp.cpp
@@ -239,13 +239,12 @@ void PacketPeerUDP::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_dest_address", "host", "port"), &PacketPeerUDP::_set_dest_address);
}
-PacketPeerUDP::PacketPeerUDP() {
-
- _sock = Ref<NetSocket>(NetSocket::create());
- blocking = true;
- packet_port = 0;
- queue_count = 0;
- peer_port = 0;
+PacketPeerUDP::PacketPeerUDP() :
+ packet_port(0),
+ queue_count(0),
+ peer_port(0),
+ blocking(true),
+ _sock(Ref<NetSocket>(NetSocket::create())) {
rb.resize(16);
}
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index 6f3a8c3d2e..b91268dab2 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -970,12 +970,11 @@ String ResourceInteractiveLoaderBinary::recognize(FileAccess *p_f) {
return type;
}
-ResourceInteractiveLoaderBinary::ResourceInteractiveLoaderBinary() {
-
- f = NULL;
- stage = 0;
- error = OK;
- translation_remapped = false;
+ResourceInteractiveLoaderBinary::ResourceInteractiveLoaderBinary() :
+ translation_remapped(false),
+ f(NULL),
+ error(OK),
+ stage(0) {
}
ResourceInteractiveLoaderBinary::~ResourceInteractiveLoaderBinary() {
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h
index 7ade4a2dfc..a46a00203f 100644
--- a/core/io/resource_loader.h
+++ b/core/io/resource_loader.h
@@ -123,6 +123,7 @@ public:
static int get_import_order(const String &p_path);
static void set_timestamp_on_load(bool p_timestamp) { timestamp_on_load = p_timestamp; }
+ static bool get_timestamp_on_load() { return timestamp_on_load; }
static void notify_load_error(const String &p_err) {
if (err_notify) err_notify(err_notify_ud, p_err);
diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h
index 6134d9db57..cdd43292a2 100644
--- a/core/io/resource_saver.h
+++ b/core/io/resource_saver.h
@@ -76,6 +76,8 @@ public:
static void add_resource_format_saver(ResourceFormatSaver *p_format_saver, bool p_at_front = false);
static void set_timestamp_on_save(bool p_timestamp) { timestamp_on_save = p_timestamp; }
+ static bool get_timestamp_on_save() { return timestamp_on_save; }
+
static void set_save_callback(ResourceSavedCallback p_callback);
};
diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp
index 28561e8cbc..4b86735aa3 100644
--- a/core/io/stream_peer_tcp.cpp
+++ b/core/io/stream_peer_tcp.cpp
@@ -349,12 +349,11 @@ void StreamPeerTCP::_bind_methods() {
BIND_ENUM_CONSTANT(STATUS_ERROR);
}
-StreamPeerTCP::StreamPeerTCP() {
-
- _sock = Ref<NetSocket>(NetSocket::create());
- status = STATUS_NONE;
- peer_host = IP_Address();
- peer_port = 0;
+StreamPeerTCP::StreamPeerTCP() :
+ _sock(Ref<NetSocket>(NetSocket::create())),
+ status(STATUS_NONE),
+ peer_host(IP_Address()),
+ peer_port(0) {
}
StreamPeerTCP::~StreamPeerTCP() {
diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp
index b8194cb17f..be9176779e 100644
--- a/core/io/tcp_server.cpp
+++ b/core/io/tcp_server.cpp
@@ -116,9 +116,8 @@ void TCP_Server::stop() {
}
}
-TCP_Server::TCP_Server() {
-
- _sock = Ref<NetSocket>(NetSocket::create());
+TCP_Server::TCP_Server() :
+ _sock(Ref<NetSocket>(NetSocket::create())) {
}
TCP_Server::~TCP_Server() {
diff --git a/core/math/expression.cpp b/core/math/expression.cpp
index 0cfb54234c..7f3439e956 100644
--- a/core/math/expression.cpp
+++ b/core/math/expression.cpp
@@ -2157,13 +2157,13 @@ void Expression::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_error_text"), &Expression::get_error_text);
}
-Expression::Expression() {
- output_type = Variant::NIL;
- error_set = true;
- root = NULL;
- nodes = NULL;
- sequenced = false;
- execution_error = false;
+Expression::Expression() :
+ output_type(Variant::NIL),
+ sequenced(false),
+ error_set(true),
+ root(NULL),
+ nodes(NULL),
+ execution_error(false) {
}
Expression::~Expression() {
diff --git a/core/math/expression.h b/core/math/expression.h
index ac2416d0dd..7f81542480 100644
--- a/core/math/expression.h
+++ b/core/math/expression.h
@@ -116,7 +116,9 @@ private:
Variant::Type type;
String name;
- Input() { type = Variant::NIL; }
+ Input() :
+ type(Variant::NIL) {
+ }
};
Vector<Input> inputs;
diff --git a/core/math/plane.h b/core/math/plane.h
index 4eedebb79e..5182dc67dd 100644
--- a/core/math/plane.h
+++ b/core/math/plane.h
@@ -74,10 +74,11 @@ public:
_FORCE_INLINE_ bool operator!=(const Plane &p_plane) const;
operator String() const;
- _FORCE_INLINE_ Plane() { d = 0; }
+ _FORCE_INLINE_ Plane() :
+ d(0) {}
_FORCE_INLINE_ Plane(real_t p_a, real_t p_b, real_t p_c, real_t p_d) :
normal(p_a, p_b, p_c),
- d(p_d){};
+ d(p_d) {}
_FORCE_INLINE_ Plane(const Vector3 &p_normal, real_t p_d);
_FORCE_INLINE_ Plane(const Vector3 &p_point, const Vector3 &p_normal);
diff --git a/core/math/quat.h b/core/math/quat.h
index c4f9b3a732..59a15f460b 100644
--- a/core/math/quat.h
+++ b/core/math/quat.h
@@ -115,20 +115,20 @@ public:
z = p_z;
w = p_w;
}
- inline Quat(real_t p_x, real_t p_y, real_t p_z, real_t p_w) {
- x = p_x;
- y = p_y;
- z = p_z;
- w = p_w;
+ inline Quat(real_t p_x, real_t p_y, real_t p_z, real_t p_w) :
+ x(p_x),
+ y(p_y),
+ z(p_z),
+ w(p_w) {
}
Quat(const Vector3 &axis, const real_t &angle) { set_axis_angle(axis, angle); }
Quat(const Vector3 &euler) { set_euler(euler); }
- Quat(const Quat &q) {
- x = q.x;
- y = q.y;
- z = q.z;
- w = q.w;
+ Quat(const Quat &q) :
+ x(q.x),
+ y(q.y),
+ z(q.z),
+ w(q.w) {
}
Quat(const Vector3 &v0, const Vector3 &v1) // shortest arc
@@ -153,9 +153,11 @@ public:
}
}
- inline Quat() {
- x = y = z = 0;
- w = 1;
+ inline Quat() :
+ x(0),
+ y(0),
+ z(0),
+ w(1) {
}
};
diff --git a/core/math/random_number_generator.cpp b/core/math/random_number_generator.cpp
index e4ec0dac99..9f0a5bc992 100644
--- a/core/math/random_number_generator.cpp
+++ b/core/math/random_number_generator.cpp
@@ -40,6 +40,7 @@ void RandomNumberGenerator::_bind_methods() {
ClassDB::bind_method(D_METHOD("randi"), &RandomNumberGenerator::randi);
ClassDB::bind_method(D_METHOD("randf"), &RandomNumberGenerator::randf);
- ClassDB::bind_method(D_METHOD("rand_range", "from", "to"), &RandomNumberGenerator::rand_range);
+ ClassDB::bind_method(D_METHOD("randf_range", "from", "to"), &RandomNumberGenerator::randf_range);
+ ClassDB::bind_method(D_METHOD("randi_range", "from", "to"), &RandomNumberGenerator::randi_range);
ClassDB::bind_method(D_METHOD("randomize"), &RandomNumberGenerator::randomize);
}
diff --git a/core/math/random_number_generator.h b/core/math/random_number_generator.h
index 557863fdbd..078bfbed60 100644
--- a/core/math/random_number_generator.h
+++ b/core/math/random_number_generator.h
@@ -53,7 +53,12 @@ public:
_FORCE_INLINE_ real_t randf() { return randbase.randf(); }
- _FORCE_INLINE_ real_t rand_range(real_t from, real_t to) { return randbase.random(from, to); }
+ _FORCE_INLINE_ real_t randf_range(real_t from, real_t to) { return randbase.random(from, to); }
+
+ _FORCE_INLINE_ int randi_range(int from, int to) {
+ unsigned int ret = randbase.rand();
+ return ret % (to - from + 1) + from;
+ }
RandomNumberGenerator();
};
diff --git a/core/message_queue.cpp b/core/message_queue.cpp
index abfc73407a..2952593798 100644
--- a/core/message_queue.cpp
+++ b/core/message_queue.cpp
@@ -209,9 +209,9 @@ void MessageQueue::statistics() {
} break;
}
+ } else {
//object was deleted
print_line("Object was deleted while awaiting a callback");
- } else {
null_count++;
}
diff --git a/core/object.cpp b/core/object.cpp
index ea77090a45..3a14c7c0b5 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -1443,8 +1443,20 @@ Error Object::connect(const StringName &p_signal, Object *p_to_object, const Str
if (!s) {
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_signal);
//check in script
- if (!signal_is_valid && !script.is_null() && Ref<Script>(script)->has_script_signal(p_signal))
- signal_is_valid = true;
+ if (!signal_is_valid && !script.is_null()) {
+
+ if (Ref<Script>(script)->has_script_signal(p_signal)) {
+ signal_is_valid = true;
+ }
+#ifdef TOOLS_ENABLED
+ else {
+ //allow connecting signals anyway if script is invalid, see issue #17070
+ if (!Ref<Script>(script)->is_valid()) {
+ signal_is_valid = true;
+ }
+ }
+#endif
+ }
if (!signal_is_valid) {
ERR_EXPLAIN("In Object of type '" + String(get_class()) + "': Attempt to connect nonexistent signal '" + p_signal + "' to method '" + p_to_object->get_class() + "." + p_to_method + "'");
diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp
index daa3eacd5f..8f4f2b6920 100644
--- a/core/os/dir_access.cpp
+++ b/core/os/dir_access.cpp
@@ -349,9 +349,9 @@ class DirChanger {
String original_dir;
public:
- DirChanger(DirAccess *p_da, String p_dir) {
- da = p_da;
- original_dir = p_da->get_current_dir();
+ DirChanger(DirAccess *p_da, String p_dir) :
+ da(p_da),
+ original_dir(p_da->get_current_dir()) {
p_da->change_dir(p_dir);
}
@@ -431,8 +431,12 @@ Error DirAccess::copy_dir(String p_from, String p_to, int p_chmod_flags) {
ERR_FAIL_COND_V(err, err);
}
+ if (!p_to.ends_with("/")) {
+ p_to = p_to + "/";
+ }
+
DirChanger dir_changer(this, p_from);
- Error err = _copy_dir(target_da, p_to + "/", p_chmod_flags);
+ Error err = _copy_dir(target_da, p_to, p_chmod_flags);
memdelete(target_da);
return err;
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index 0945cdd512..6e0b914367 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -60,6 +60,7 @@ void MainLoop::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_TRANSLATION_CHANGED);
BIND_CONSTANT(NOTIFICATION_WM_ABOUT);
BIND_CONSTANT(NOTIFICATION_CRASH);
+ BIND_CONSTANT(NOTIFICATION_OS_IME_UPDATE);
};
void MainLoop::set_init_script(const Ref<Script> &p_init_script) {
diff --git a/core/os/main_loop.h b/core/os/main_loop.h
index 43f74302a8..e9b331ee45 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -65,6 +65,7 @@ public:
NOTIFICATION_TRANSLATION_CHANGED = 90,
NOTIFICATION_WM_ABOUT = 91,
NOTIFICATION_CRASH = 92,
+ NOTIFICATION_OS_IME_UPDATE = 93,
};
virtual void input_event(const Ref<InputEvent> &p_event);
diff --git a/core/os/os.h b/core/os/os.h
index 7786ffb26e..05ec3ac424 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -242,7 +242,8 @@ public:
virtual void set_ime_active(const bool p_active) {}
virtual void set_ime_position(const Point2 &p_pos) {}
- virtual void set_ime_intermediate_text_callback(ImeCallback p_callback, void *p_inp) {}
+ virtual Point2 get_ime_selection() const { return Point2(); }
+ virtual String get_ime_text() const { return String(); }
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) { return ERR_UNAVAILABLE; }
virtual Error close_dynamic_library(void *p_library_handle) { return ERR_UNAVAILABLE; }
@@ -480,6 +481,7 @@ public:
enum EngineContext {
CONTEXT_EDITOR,
CONTEXT_PROJECTMAN,
+ CONTEXT_ENGINE,
};
virtual void set_context(int p_context);
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 407bb78375..031ac06063 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -307,7 +307,7 @@ void ProjectSettings::_convert_to_last_version() {
* If a project file is found, load it or fail.
* If nothing was found, error out.
*/
-Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
+Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
// If looking for files in a network client, use it directly
@@ -450,6 +450,18 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
return OK;
}
+Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
+ Error err = _setup(p_path, p_main_pack, p_upwards);
+ if (err == OK) {
+ String custom_settings = GLOBAL_DEF("application/config/project_settings_override", "");
+ if (custom_settings != "") {
+ _load_settings_text(custom_settings);
+ }
+ }
+
+ return err;
+}
+
bool ProjectSettings::has_setting(String p_var) const {
_THREAD_SAFE_METHOD_
@@ -995,6 +1007,7 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF("application/run/disable_stderr", false);
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");
+ GLOBAL_DEF("application/config/project_settings_override", "");
action = Dictionary();
action["deadzone"] = Variant(0.5f);
diff --git a/core/project_settings.h b/core/project_settings.h
index 611355f2ef..f150e4499b 100644
--- a/core/project_settings.h
+++ b/core/project_settings.h
@@ -112,6 +112,8 @@ protected:
void _add_property_info_bind(const Dictionary &p_info);
+ Error _setup(const String &p_path, const String &p_main_pack, bool p_upwards = false);
+
protected:
static void _bind_methods();
diff --git a/core/reference.cpp b/core/reference.cpp
index b79ad0bf3d..6ccc444b93 100644
--- a/core/reference.cpp
+++ b/core/reference.cpp
@@ -139,8 +139,8 @@ void WeakRef::set_ref(const REF &p_ref) {
ref = p_ref.is_valid() ? p_ref->get_instance_id() : 0;
}
-WeakRef::WeakRef() {
- ref = 0;
+WeakRef::WeakRef() :
+ ref(0) {
}
void WeakRef::_bind_methods() {
diff --git a/core/script_language.h b/core/script_language.h
index bcd9c2c5ea..654d1d4265 100644
--- a/core/script_language.h
+++ b/core/script_language.h
@@ -128,6 +128,7 @@ public:
virtual MethodInfo get_method_info(const StringName &p_method) const = 0;
virtual bool is_tool() const = 0;
+ virtual bool is_valid() const = 0;
virtual ScriptLanguage *get_language() const = 0;
diff --git a/core/ustring.h b/core/ustring.h
index d2766ec7a3..8e4dbd8031 100644
--- a/core/ustring.h
+++ b/core/ustring.h
@@ -63,7 +63,7 @@ public:
CharString &operator+=(char p_char);
int length() const { return size() ? size() - 1 : 0; }
const char *get_data() const;
- operator const char *() { return get_data(); };
+ operator const char *() const { return get_data(); };
};
typedef wchar_t CharType;
diff --git a/core/variant.cpp b/core/variant.cpp
index edbe66ba31..eb9f34fee6 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -1662,7 +1662,17 @@ Variant::operator Transform() const {
return Transform(*_data._basis, Vector3());
else if (type == QUAT)
return Transform(Basis(*reinterpret_cast<const Quat *>(_data._mem)), Vector3());
- else
+ else if (type == TRANSFORM2D) {
+ const Transform2D &t = *_data._transform2d;
+ Transform m;
+ m.basis.elements[0][0] = t.elements[0][0];
+ m.basis.elements[1][0] = t.elements[0][1];
+ m.basis.elements[0][1] = t.elements[1][0];
+ m.basis.elements[1][1] = t.elements[1][1];
+ m.origin[0] = t.elements[2][0];
+ m.origin[1] = t.elements[2][1];
+ return m;
+ } else
return Transform();
}
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index d193858966..9f172f0d57 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -2149,7 +2149,7 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid)
int idx = p_index;
if (idx < 0)
idx += 4;
- if (idx >= 0 || idx < 4) {
+ if (idx >= 0 && idx < 4) {
Color *v = reinterpret_cast<Color *>(_data._mem);
(*v)[idx] = p_value;
valid = true;
@@ -2524,7 +2524,7 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const {
int idx = p_index;
if (idx < 0)
idx += 4;
- if (idx >= 0 || idx < 4) {
+ if (idx >= 0 && idx < 4) {
const Color *v = reinterpret_cast<const Color *>(_data._mem);
valid = true;
return (*v)[idx];
diff --git a/core/variant_parser.h b/core/variant_parser.h
index 531c1d59cd..e183169ed8 100644
--- a/core/variant_parser.h
+++ b/core/variant_parser.h
@@ -45,7 +45,8 @@ public:
CharType saved;
- Stream() { saved = 0; }
+ Stream() :
+ saved(0) {}
virtual ~Stream() {}
};
diff --git a/doc/classes/@GDScript.xml b/doc/classes/@GDScript.xml
index 20ec9141c6..2bdfc56c44 100644
--- a/doc/classes/@GDScript.xml
+++ b/doc/classes/@GDScript.xml
@@ -127,7 +127,7 @@
<description>
Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
[codeblock]
- a = atan(0,-1) # a is 3.141593
+ a = atan(0, -1) # a is 3.141593
[/codeblock]
</description>
</method>
@@ -175,7 +175,7 @@
# a is 'A'
a = char(65)
# a is 'a'
- a = char(65+32)
+ a = char(65 + 32)
[/codeblock]
</description>
</method>
@@ -230,7 +230,7 @@
Returns the cosine of angle [code]s[/code] in radians.
[codeblock]
# prints 1 and -1
- print(cos(PI*2))
+ print(cos(PI * 2))
print(cos(PI))
[/codeblock]
</description>
@@ -584,7 +584,7 @@
<description>
Returns the maximum of two values.
[codeblock]
- max(1,2) # returns 2
+ max(1, 2) # returns 2
max(-3.99, -4) # returns -3.99
[/codeblock]
</description>
@@ -599,7 +599,7 @@
<description>
Returns the minimum of two values.
[codeblock]
- min(1,2) # returns 1
+ min(1, 2) # returns 1
min(-3.99, -4) # returns -4
[/codeblock]
</description>
@@ -657,7 +657,7 @@
<description>
Returns the result of [code]x[/code] raised to the power of [code]y[/code].
[codeblock]
- pow(2,5) # returns 32
+ pow(2, 5) # returns 32
[/codeblock]
</description>
</method>
@@ -681,8 +681,8 @@
<description>
Converts one or more arguments to strings in the best way possible and prints them to the console.
[codeblock]
- a = [1,2,3]
- print("a","b",a) # prints ab[1, 2, 3]
+ a = [1, 2, 3]
+ print("a", "b", a) # prints ab[1, 2, 3]
[/codeblock]
</description>
</method>
@@ -751,6 +751,10 @@
<argument index="0" name="message" type="String">
</argument>
<description>
+ Pushes an error message to Godot's built-in debugger and to the OS terminal.
+ [codeblock]
+ push_error("test error") # prints "test error" to debugger and terminal as error call
+ [/codeblock]
</description>
</method>
<method name="push_warning">
@@ -759,6 +763,10 @@
<argument index="0" name="message" type="String">
</argument>
<description>
+ Pushes a warning message to Godot's built-in debugger and to the OS terminal.
+ [codeblock]
+ push_warning("test warning") # prints "test warning" to debugger and terminal as warning call
+ [/codeblock]
</description>
</method>
<method name="rad2deg">
@@ -1001,7 +1009,7 @@
<description>
Returns the tangent of angle [code]s[/code] in radians.
[codeblock]
- tan( deg2rad(45) ) # returns 1
+ tan(deg2rad(45)) # returns 1
[/codeblock]
</description>
</method>
diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml
index 482566ee9f..e1b79a2a3e 100644
--- a/doc/classes/AStar.xml
+++ b/doc/classes/AStar.xml
@@ -47,8 +47,7 @@
Adds a new point at the given position with the given identifier. The algorithm prefers points with lower [code]weight_scale[/code] to form a path. The [code]id[/code] must be 0 or larger, and the [code]weight_scale[/code] must be 1 or larger.
[codeblock]
var as = AStar.new()
-
- as.add_point(1, Vector3(1,0,0), 4) # Adds the point (1,0,0) with weight_scale=4 and id=1
+ as.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1
[/codeblock]
If there already exists a point for the given id, its position and weight scale are updated to the given values.
</description>
@@ -81,15 +80,12 @@
<argument index="2" name="bidirectional" type="bool" default="true">
</argument>
<description>
- Creates a segment between the given points.
+ 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.
[codeblock]
var as = AStar.new()
-
- as.add_point(1, Vector3(1,1,0))
- as.add_point(2, Vector3(0,5,0))
-
- as.connect_points(1, 2, false) # If bidirectional=false it's only possible to go from point 1 to point 2
- # and not from point 2 to point 1.
+ as.add_point(1, Vector3(1, 1, 0))
+ as.add_point(2, Vector3(0, 5, 0))
+ as.connect_points(1, 2, false)
[/codeblock]
</description>
</method>
@@ -129,15 +125,12 @@
Returns the closest position to [code]to_position[/code] that resides inside a segment between two connected points.
[codeblock]
var as = AStar.new()
-
- as.add_point(1, Vector3(0,0,0))
- as.add_point(2, Vector3(0,5,0))
-
+ as.add_point(1, Vector3(0, 0, 0))
+ as.add_point(2, Vector3(0, 5, 0))
as.connect_points(1, 2)
-
- var res = as.get_closest_position_in_segment(Vector3(3,3,0)) # returns (0, 3, 0)
+ var res = as.get_closest_position_in_segment(Vector3(3, 3, 0)) # returns (0, 3, 0)
[/codeblock]
- The result is in the segment that goes from [code]y=0[/code] to [code]y=5[/code]. It's the closest position in the segment to the given point.
+ The result is in the segment that goes from [code]y = 0[/code] to [code]y = 5[/code]. It's the closest position in the segment to the given point.
</description>
</method>
<method name="get_id_path">
@@ -151,11 +144,10 @@
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.
[codeblock]
var as = AStar.new()
-
- as.add_point(1, Vector3(0,0,0))
- as.add_point(2, Vector3(0,1,0), 1) # default weight is 1
- as.add_point(3, Vector3(1,1,0))
- as.add_point(4, Vector3(2,0,0))
+ as.add_point(1, Vector3(0, 0, 0))
+ as.add_point(2, Vector3(0, 1, 0), 1) # default weight is 1
+ as.add_point(3, Vector3(1, 1, 0))
+ as.add_point(4, Vector3(2, 0, 0))
as.connect_points(1, 2, false)
as.connect_points(2, 3, false)
@@ -177,11 +169,10 @@
Returns an array with the ids of the points that form the connect with the given point.
[codeblock]
var as = AStar.new()
-
- as.add_point(1, Vector3(0,0,0))
- as.add_point(2, Vector3(0,1,0))
- as.add_point(3, Vector3(1,1,0))
- as.add_point(4, Vector3(2,0,0))
+ as.add_point(1, Vector3(0, 0, 0))
+ as.add_point(2, Vector3(0, 1, 0))
+ as.add_point(3, Vector3(1, 1, 0))
+ as.add_point(4, Vector3(2, 0, 0))
as.connect_points(1, 2, true)
as.connect_points(1, 3, true)
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 3b3638a4f3..499da4b8a3 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -110,6 +110,12 @@
Get the actual playing speed of current animation or 0 if not playing. This speed is the [code]playback_speed[/code] property multiplied by [code]custom_speed[/code] argument specified when calling the [code]play[/code] method.
</description>
</method>
+ <method name="get_queue">
+ <return type="PoolStringArray">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="has_animation" qualifiers="const">
<return type="bool">
</return>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index b013b3c4ae..6bd0ef3421 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -196,10 +196,10 @@
<description>
Return true if the array contains given value.
[codeblock]
- [ "inside", 7 ].has("inside") == true
- [ "inside", 7 ].has("outside") == false
- [ "inside", 7 ].has(7) == true
- [ "inside", 7 ].has("7") == false
+ ["inside", 7].has("inside") == true
+ ["inside", 7].has("outside") == false
+ ["inside", 7].has(7) == true
+ ["inside", 7].has("7") == false
[/codeblock]
</description>
</method>
diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml
index 7806cf4ce4..bcb9b4f6da 100644
--- a/doc/classes/ArrayMesh.xml
+++ b/doc/classes/ArrayMesh.xml
@@ -6,9 +6,9 @@
The [code]ArrayMesh[/code] is used to construct a [Mesh] by specifying the attributes as arrays. The most basic example is the creation of a single triangle
[codeblock]
var vertices = PoolVector3Array()
- vertices.push_back(Vector3(0,1,0))
- vertices.push_back(Vector3(1,0,0))
- vertices.push_back(Vector3(0,0,1))
+ vertices.push_back(Vector3(0, 1, 0))
+ vertices.push_back(Vector3(1, 0, 0))
+ vertices.push_back(Vector3(0, 0, 1))
# Initialize the ArrayMesh.
var arr_mesh = ArrayMesh.new()
var arrays = []
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 3ae5454e65..e1939e679d 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -61,6 +61,15 @@
Generates an [AudioBusLayout] using the available busses and effects.
</description>
</method>
+ <method name="get_bus_channels" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="bus_idx" type="int">
+ </argument>
+ <description>
+ Returns the amount of channels of the bus at index [code]bus_idx[/code].
+ </description>
+ </method>
<method name="get_bus_count" qualifiers="const">
<return type="int">
</return>
diff --git a/doc/classes/AudioStreamSample.xml b/doc/classes/AudioStreamSample.xml
index 9e56cc6016..77d5f14ab7 100644
--- a/doc/classes/AudioStreamSample.xml
+++ b/doc/classes/AudioStreamSample.xml
@@ -62,5 +62,8 @@
<constant name="LOOP_PING_PONG" value="2" enum="LoopMode">
Audio loops the data between loop_begin and loop_end playing back and forth.
</constant>
+ <constant name="LOOP_BACKWARD" value="3" enum="LoopMode">
+ Audio loops the data between loop_begin and loop_end playing backward only.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/ButtonGroup.xml b/doc/classes/ButtonGroup.xml
index e839c3e750..6273c8f83f 100644
--- a/doc/classes/ButtonGroup.xml
+++ b/doc/classes/ButtonGroup.xml
@@ -12,18 +12,21 @@
<demos>
</demos>
<methods>
+ <method name="get_buttons">
+ <return type="Array">
+ </return>
+ <description>
+ Returns an [Array] of [Button]s who have this as their [code]ButtonGroup[/code] (see [member BaseButton.group]).
+ </description>
+ </method>
<method name="get_pressed_button">
<return type="BaseButton">
</return>
<description>
- Return the pressed button.
+ Returns the current pressed button.
</description>
</method>
</methods>
<constants>
</constants>
- <theme_items>
- <theme_item name="panel" type="StyleBox">
- </theme_item>
- </theme_items>
</class>
diff --git a/doc/classes/CPUParticles.xml b/doc/classes/CPUParticles.xml
index c778cd56b3..2073ca0664 100644
--- a/doc/classes/CPUParticles.xml
+++ b/doc/classes/CPUParticles.xml
@@ -127,11 +127,11 @@
</member>
<member name="randomness" type="float" setter="set_randomness_ratio" getter="get_randomness_ratio">
</member>
- <member name="scale" type="float" setter="set_param" getter="get_param">
+ <member name="scale_amount" type="float" setter="set_param" getter="get_param">
</member>
- <member name="scale_curve" type="Curve" setter="set_param_curve" getter="get_param_curve">
+ <member name="scale_amount_curve" type="Curve" setter="set_param_curve" getter="get_param_curve">
</member>
- <member name="scale_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
+ <member name="scale_amount_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
</member>
<member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale">
</member>
diff --git a/doc/classes/CPUParticles2D.xml b/doc/classes/CPUParticles2D.xml
index bae725d47c..12a176589c 100644
--- a/doc/classes/CPUParticles2D.xml
+++ b/doc/classes/CPUParticles2D.xml
@@ -123,11 +123,11 @@
</member>
<member name="randomness" type="float" setter="set_randomness_ratio" getter="get_randomness_ratio">
</member>
- <member name="scale" type="float" setter="set_param" getter="get_param">
+ <member name="scale_amount" type="float" setter="set_param" getter="get_param">
</member>
- <member name="scale_curve" type="Curve" setter="set_param_curve" getter="get_param_curve">
+ <member name="scale_amount_curve" type="Curve" setter="set_param_curve" getter="get_param_curve">
</member>
- <member name="scale_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
+ <member name="scale_amount_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
</member>
<member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale">
</member>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index 4bae656740..9e62cde019 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -135,7 +135,7 @@
<method name="draw_multimesh">
<return type="void">
</return>
- <argument index="0" name="mesh" type="Mesh">
+ <argument index="0" name="multimesh" type="MultiMesh">
</argument>
<argument index="1" name="texture" type="Texture">
</argument>
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 82a10fbaa4..68f5734491 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -19,11 +19,6 @@
</argument>
<description>
Constructs a color from an HTML hexadecimal color string in ARGB or RGB format. See also [method @GDScript.ColorN].
- The following string formats are supported:
- [code]"#ff00ff00"[/code] - ARGB format with '#'
- [code]"ff00ff00"[/code] - ARGB format
- [code]"#ff00ff"[/code] - RGB format with '#'
- [code]"ff00ff"[/code] - RGB format
[codeblock]
# Each of the following creates the same color RGBA(178, 217, 10, 255)
var c1 = Color("#ffb2d90a") # ARGB format with '#'
@@ -57,7 +52,7 @@
<description>
Constructs a color from an RGB profile using values between 0 and 1. Alpha will always be 1.
[codeblock]
- var c = Color(0.2, 1.0, .7) # Equivalent to RGBA(51, 255, 178, 255)
+ var c = Color(0.2, 1.0, 0.7) # Equivalent to RGBA(51, 255, 178, 255)
[/codeblock]
</description>
</method>
@@ -75,7 +70,7 @@
<description>
Constructs a color from an RGBA profile using values between 0 and 1.
[codeblock]
- var c = Color(0.2, 1.0, .7, .8) # Equivalent to RGBA(51, 255, 178, 204)
+ var c = Color(0.2, 1.0, 0.7, 0.8) # Equivalent to RGBA(51, 255, 178, 204)
[/codeblock]
</description>
</method>
@@ -88,8 +83,8 @@
Returns a new color resulting from blending this color over another. If the color is opaque, the result is also opaque. The second color may have a range of alpha values.
[codeblock]
var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%
- var fg = Color(1.0, 0.0, 0.0, .5) # Red with alpha of 50%
- var blendedColor = bg.blend(fg) # Brown with alpha of 75%
+ var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%
+ var blended_color = bg.blend(fg) # Brown with alpha of 75%
[/codeblock]
</description>
</method>
@@ -99,8 +94,8 @@
<description>
Returns the most contrasting color.
[codeblock]
- var c = Color(.3, .4, .9)
- var contrastedColor = c.contrasted() # Equivalent to RGBA(204, 229, 102, 255)
+ var c = Color(0.3, 0.4, 0.9)
+ var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, 255)
[/codeblock]
</description>
</method>
@@ -110,7 +105,7 @@
<argument index="0" name="amount" type="float">
</argument>
<description>
- Returns a new color resulting from making this color darker by the specified percentage (0-1).
+ Returns a new color resulting from making this color darker by the specified percentage (ratio from 0 to 1).
[codeblock]
var green = Color(0.0, 1.0, 0.0)
var darkgreen = green.darkened(0.2) # 20% darker than regular green
@@ -140,7 +135,7 @@
</return>
<description>
Returns the color's grayscale representation.
- The gray is calculated by [code](r + g + b) / 3[/code].
+ The gray value is calculated as [code](r + g + b) / 3[/code].
[codeblock]
var c = Color(0.2, 0.45, 0.82)
var gray = c.gray() # a value of 0.466667
@@ -153,8 +148,8 @@
<description>
Returns the inverted color [code](1 - r, 1 - g, 1 - b, 1 - a)[/code].
[codeblock]
- var c = Color(.3, .4, .9)
- var invertedColor = c.inverted() # a color of an RGBA(178, 153, 26, 255)
+ var c = Color(0.3, 0.4, 0.9)
+ var inverted_color = c.inverted() # a color of an RGBA(178, 153, 26, 255)
[/codeblock]
</description>
</method>
@@ -164,7 +159,7 @@
<argument index="0" name="amount" type="float">
</argument>
<description>
- Returns a new color resulting from making this color lighter by the specified percentage (0-1).
+ Returns a new color resulting from making this color lighter by the specified percentage (ratio from 0 to 1).
[codeblock]
var green = Color(0.0, 1.0, 0.0)
var lightgreen = green.lightened(0.2) # 20% lighter than regular green
@@ -179,7 +174,7 @@
<argument index="1" name="t" type="float">
</argument>
<description>
- Returns the linear interpolation with another color. The value t is between 0 and 1.
+ Returns the linear interpolation with another color. The interpolation factor [code]t[/code] is between 0 and 1.
[codeblock]
var c1 = Color(1.0, 0.0, 0.0)
var c2 = Color(0.0, 1.0, 0.0)
@@ -193,7 +188,7 @@
<description>
Returns the color's 32-bit integer in ABGR format (each byte represents a component of the ABGR profile). ABGR is the reversed version of the default format.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_abgr32()) # Prints 4281565439
[/codeblock]
</description>
@@ -204,7 +199,7 @@
<description>
Returns the color's 64-bit integer in ABGR format (each word represents a component of the ABGR profile). ABGR is the reversed version of the default format.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_abgr64()) # Prints -225178692812801
[/codeblock]
</description>
@@ -215,7 +210,7 @@
<description>
Returns the color's 32-bit integer in ARGB format (each byte represents a component of the ARGB profile). ARGB is more compatible with DirectX.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_argb32()) # Prints 4294934323
[/codeblock]
</description>
@@ -226,7 +221,7 @@
<description>
Returns the color's 64-bit integer in ARGB format (each word represents a component of the ARGB profile). ARGB is more compatible with DirectX.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_argb64()) # Prints -2147470541
[/codeblock]
</description>
@@ -240,7 +235,7 @@
Returns the color's HTML hexadecimal color string in ARGB format (ex: [code]ff34f822[/code]).
Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from the hexadecimal string.
[codeblock]
- var c = Color(1, 1, 1, .5)
+ var c = Color(1, 1, 1, 0.5)
var s1 = c.to_html() # Results "7fffffff"
var s2 = c.to_html(false) # Results 'ffffff'
[/codeblock]
@@ -252,7 +247,7 @@
<description>
Returns the color's 32-bit integer in RGBA format (each byte represents a component of the RGBA profile). RGBA is Godot's default format.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_rgba32()) # Prints 4286526463
[/codeblock]
</description>
@@ -263,7 +258,7 @@
<description>
Returns the color's 64-bit integer in RGBA format (each word represents a component of the RGBA profile). RGBA is Godot's default format.
[codeblock]
- var c = Color(1, .5, .2)
+ var c = Color(1, 0.5, 0.2)
print(c.to_rgba64()) # Prints -140736629309441
[/codeblock]
</description>
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 554e6b5632..b3a0164704 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -20,6 +20,22 @@
Adds the given color to a list of color presets. The presets are displayed in the color picker and the user will be able to select them. Note: the presets list is only for [i]this[/i] color picker.
</description>
</method>
+ <method name="erase_preset">
+ <return type="void">
+ </return>
+ <argument index="0" name="color" type="Color">
+ </argument>
+ <description>
+ Remove the given color from the list of color presets of this color picker.
+ </description>
+ </method>
+ <method name="get_presets" qualifiers="const">
+ <return type="PoolColorArray">
+ </return>
+ <description>
+ Return the list of colors in the presets of the color picker.
+ </description>
+ </method>
</methods>
<members>
<member name="color" type="Color" setter="set_pick_color" getter="get_pick_color">
@@ -43,6 +59,20 @@
Emitted when the color is changed.
</description>
</signal>
+ <signal name="preset_added">
+ <argument index="0" name="color" type="Color">
+ </argument>
+ <description>
+ Emitted when a preset is added.
+ </description>
+ </signal>
+ <signal name="preset_removed">
+ <argument index="0" name="color" type="Color">
+ </argument>
+ <description>
+ Emitted when a preset is removed.
+ </description>
+ </signal>
</signals>
<constants>
</constants>
diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml
index 6b31149c2f..8210e7dc9c 100644
--- a/doc/classes/ConvexPolygonShape2D.xml
+++ b/doc/classes/ConvexPolygonShape2D.xml
@@ -18,7 +18,7 @@
<argument index="0" name="point_cloud" type="PoolVector2Array">
</argument>
<description>
- Currently, this method does nothing.
+ Based on the set of points provided, this creates and assigns the [member points] property using the convex hull algorithm. Removing all unneeded points. See [method Geometry.convex_hull_2d] for details.
</description>
</method>
</methods>
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index 24201c39b9..d1e90470e1 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -35,7 +35,7 @@
func get_import_options(i):
return [{"name": "my_option", "default_value": false}]
- func import(source_file, save_path, options, r_platform_variants, r_gen_files):
+ func import(source_file, save_path, options, platform_variants, gen_files):
var file = File.new()
if file.open(source_file, File.READ) != OK:
return FAILED
diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml
index 0c5de68d98..e69f3b0119 100644
--- a/doc/classes/EditorScenePostImport.xml
+++ b/doc/classes/EditorScenePostImport.xml
@@ -20,7 +20,7 @@
func iterate(node):
if node != null:
- node.name = "modified_"+node.name
+ node.name = "modified_" + node.name
for child in node.get_children():
iterate(child)
[/codeblock]
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 949c93761e..80281a603a 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -159,6 +159,8 @@
<member name="glow_enabled" type="bool" setter="set_glow_enabled" getter="is_glow_enabled">
Enables glow rendering.
</member>
+ <member name="glow_hdr_luminance_cap" type="float" setter="set_glow_hdr_luminance_cap" getter="get_glow_hdr_luminance_cap">
+ </member>
<member name="glow_hdr_scale" type="float" setter="set_glow_hdr_bleed_scale" getter="get_glow_hdr_bleed_scale">
Bleed scale of the HDR glow.
</member>
diff --git a/doc/classes/Generic6DOFJoint.xml b/doc/classes/Generic6DOFJoint.xml
index e1046e282a..b6ac69e257 100644
--- a/doc/classes/Generic6DOFJoint.xml
+++ b/doc/classes/Generic6DOFJoint.xml
@@ -242,6 +242,8 @@
</member>
<member name="linear_spring_z/stiffness" type="float" setter="set_param_z" getter="get_param_z">
</member>
+ <member name="precision" type="int" setter="set_precision" getter="get_precision">
+ </member>
</members>
<constants>
<constant name="PARAM_LINEAR_LOWER_LIMIT" value="0" enum="Param">
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index 2f21505757..3172a5d6c0 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -108,14 +108,14 @@
Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.:
[codeblock]
var fields = {"username": "user", "password": "pass"}
- String queryString = httpClient.query_string_from_dict(fields)
- returns:= "username=user&amp;password=pass"
+ String query_string = http_client.query_string_from_dict(fields)
+ # returns: "username=user&amp;password=pass"
[/codeblock]
Furthermore, if a key has a null value, only the key itself is added, without equal sign and value. If the value is an array, for each value in it a pair with the same key is added.
[codeblock]
var fields = {"single": 123, "not_valued": null, "multiple": [22, 33, 44]}
- String queryString = httpClient.query_string_from_dict(fields)
- returns:= "single=123&amp;not_valued&amp;multiple=22&amp;multiple=33&amp;multiple=44"
+ String query_string = http_client.query_string_from_dict(fields)
+ # returns: "single=123&amp;not_valued&amp;multiple=22&amp;multiple=33&amp;multiple=44"
[/codeblock]
</description>
</method>
@@ -143,9 +143,9 @@
To create a POST request with query strings to push to the server, do:
[codeblock]
var fields = {"username" : "user", "password" : "pass"}
- var queryString = httpClient.query_string_from_dict(fields)
- var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(queryString.length())]
- var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, queryString)
+ var query_string = http_client.query_string_from_dict(fields)
+ var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(query_string.length())]
+ var result = http_client.request(http_client.METHOD_POST, "index.php", headers, query_string)
[/codeblock]
</description>
</method>
diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml
index ad763e6532..01836cff95 100644
--- a/doc/classes/MainLoop.xml
+++ b/doc/classes/MainLoop.xml
@@ -136,5 +136,7 @@
</constant>
<constant name="NOTIFICATION_CRASH" value="92">
</constant>
+ <constant name="NOTIFICATION_OS_IME_UPDATE" value="93">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml
index c9a8d3ce7a..636edd504b 100644
--- a/doc/classes/MenuButton.xml
+++ b/doc/classes/MenuButton.xml
@@ -27,6 +27,11 @@
</description>
</method>
</methods>
+ <members>
+ <member name="switch_on_hover" type="bool" setter="set_switch_on_hover" getter="is_switch_on_hover">
+ If [code]true[/code], when the cursor hovers above another MenuButton within the same parent which also has [code]switch_on_hover[/code] enabled, it will close the current MenuButton and open the other one.
+ </member>
+ </members>
<signals>
<signal name="about_to_show">
<description>
diff --git a/doc/classes/MeshDataTool.xml b/doc/classes/MeshDataTool.xml
index c90dba1561..7bd98323c7 100644
--- a/doc/classes/MeshDataTool.xml
+++ b/doc/classes/MeshDataTool.xml
@@ -11,9 +11,9 @@
var mdt = MeshDataTool.new()
mdt.create_from_surface(mesh, 0)
for i in range(mdt.get_vertex_count()):
- var vertex = mdt.get_vertex(i)
- ...
- mdt.set_vertex(i, vertex)
+ var vertex = mdt.get_vertex(i)
+ ...
+ mdt.set_vertex(i, vertex)
mesh.surface_remove(0)
mdt.commit_to_surface(mesh)
[/codeblock]
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index e218949757..ac865de3cd 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -210,6 +210,20 @@
Returns the path to the current engine executable.
</description>
</method>
+ <method name="get_ime_selection" qualifiers="const">
+ <return type="Vector2">
+ </return>
+ <description>
+ Returns IME selection range.
+ </description>
+ </method>
+ <method name="get_ime_text" qualifiers="const">
+ <return type="String">
+ </return>
+ <description>
+ Returns IME intermediate text.
+ </description>
+ </method>
<method name="get_latin_keyboard_variant" qualifiers="const">
<return type="String">
</return>
@@ -663,12 +677,22 @@
Sets the game's icon.
</description>
</method>
+ <method name="set_ime_active">
+ <return type="void">
+ </return>
+ <argument index="0" name="active" type="bool">
+ </argument>
+ <description>
+ Sets whether IME input mode should be enabled.
+ </description>
+ </method>
<method name="set_ime_position">
<return type="void">
</return>
<argument index="0" name="position" type="Vector2">
</argument>
<description>
+ Sets position of IME suggestion list popup (in window coordinates).
</description>
</method>
<method name="set_thread_name">
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index 86de830d56..e358ad90b5 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -4,7 +4,8 @@
Base class for all non built-in types.
</brief_description>
<description>
- Base class for all non built-in types. Everything not a built-in type starts the inheritance chain from this class.
+ Base class for all non built-in types. Everything which is not a built-in type starts the inheritance chain from this class.
+ Objects can be constructed from scripting languages, using `Object.new()` in GDScript, `new Object` in C#, or the "Construct Object" node in VisualScript.
Objects do not manage memory, if inheriting from one the object will most likely have to be deleted manually (call the [method free] function from the script or delete from C++).
Some derivatives add memory management, such as [Reference] (which keeps a reference count and deletes itself automatically when no longer referenced) and [Node], which deletes the children tree when deleted.
Objects export properties, which are mainly useful for storage and editing, but not really so much in programming. Properties are exported in [method _get_property_list] and handled in [method _get] and [method _set]. However, scripting languages and C++ have simpler means to export them.
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 7a9918237f..92d5415ed6 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -184,6 +184,9 @@
<member name="application/config/use_custom_user_dir" type="bool" setter="" getter="">
Allow the project to save to its own custom user dir (in AppData on windows or ~/.config on unixes). This setting only works for desktop exporters. A name must be set in the "custom_user_dir_name" setting for this to take effect.
</member>
+ <member name="application/config/project_settings_override" type="String" setter="" getter="">
+ Specifies a file to override project settings. For example: user://custom_settings.cfg.
+ </member>
<member name="application/run/disable_stderr" type="bool" setter="" getter="">
Disable printing to stderr on exported build.
</member>
@@ -210,6 +213,9 @@
</member>
<member name="audio/driver" type="String" setter="" getter="">
</member>
+ <member name="audio/enable_audio_input" type="bool" setter="" getter="">
+ This option should be enabled if project works with microphone.
+ </member>
<member name="audio/mix_rate" type="int" setter="" getter="">
Mix rate used for audio. In general, it's better to not touch this and leave it to the host operating system.
</member>
diff --git a/doc/classes/RandomNumberGenerator.xml b/doc/classes/RandomNumberGenerator.xml
index aee9654561..5badfba923 100644
--- a/doc/classes/RandomNumberGenerator.xml
+++ b/doc/classes/RandomNumberGenerator.xml
@@ -10,7 +10,14 @@
<demos>
</demos>
<methods>
- <method name="rand_range">
+ <method name="randf">
+ <return type="float">
+ </return>
+ <description>
+ Generates pseudo-random float between '0.0' and '1.0'.
+ </description>
+ </method>
+ <method name="randf_range">
<return type="float">
</return>
<argument index="0" name="from" type="float">
@@ -21,18 +28,22 @@
Generates pseudo-random float between [code]from[/code] and [code]to[/code].
</description>
</method>
- <method name="randf">
- <return type="float">
+ <method name="randi">
+ <return type="int">
</return>
<description>
- Generates pseudo-random float between '0.0' and '1.0'.
+ Generates pseudo-random 32-bit unsigned integer between '0' and '4294967295'.
</description>
</method>
- <method name="randi">
+ <method name="randi_range">
<return type="int">
</return>
+ <argument index="0" name="from" type="int">
+ </argument>
+ <argument index="1" name="to" type="int">
+ </argument>
<description>
- Generates pseudo-random 32-bit integer between '0' and '4294967295'.
+ Generates pseudo-random 32-bit signed integer between [code]from[/code] and [code]to[/code](inclusive).
</description>
</method>
<method name="randomize">
diff --git a/doc/classes/ScriptCreateDialog.xml b/doc/classes/ScriptCreateDialog.xml
index 67ce9a8e87..ac0384e1d4 100644
--- a/doc/classes/ScriptCreateDialog.xml
+++ b/doc/classes/ScriptCreateDialog.xml
@@ -7,9 +7,9 @@
The ScriptCreateDialog creates script files according to a given template for a given scripting language. The standard use is to configure its fields prior to calling a [method popup]() method.
[codeblock]
func _ready():
- dialog.config("Node", "res://new_node.gd") # for in-engine types
- dialog.config("\"res://base_node.gd\"", "res://derived_node.gd") # for script types
- dialog.popup_centered()
+ dialog.config("Node", "res://new_node.gd") # for in-engine types
+ dialog.config("\"res://base_node.gd\"", "res://derived_node.gd") # for script types
+ dialog.popup_centered()
[/codeblock]
</description>
<tutorials>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index a958c3fcfa..b2e3885ff2 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -467,7 +467,9 @@
<constant name="MENU_UNDO" value="5" enum="MenuItems">
Undoes the previous action.
</constant>
- <constant name="MENU_MAX" value="6" enum="MenuItems">
+ <constant name="MENU_REDO" value="6" enum="MenuItems">
+ </constant>
+ <constant name="MENU_MAX" value="7" enum="MenuItems">
</constant>
</constants>
<theme_items>
diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml
index fe43b54d5e..8c6acd2c51 100644
--- a/doc/classes/Theme.xml
+++ b/doc/classes/Theme.xml
@@ -12,6 +12,12 @@
<demos>
</demos>
<methods>
+ <method name="clear">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="clear_color">
<return type="void">
</return>
diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml
index b24eeaa112..d2bc56001c 100644
--- a/doc/classes/VisualServer.xml
+++ b/doc/classes/VisualServer.xml
@@ -1161,7 +1161,9 @@
</argument>
<argument index="8" name="hdr_bleed_scale" type="float">
</argument>
- <argument index="9" name="bicubic_upscale" type="bool">
+ <argument index="9" name="hdr_luminance_cap" type="float">
+ </argument>
+ <argument index="10" name="bicubic_upscale" type="bool">
</argument>
<description>
</description>
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index 45e1af4e42..8c212502d6 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="WorldEnvironment" inherits="Node" category="Core" version="3.1">
<brief_description>
- Default environment properties for the entire scene (post-processing effects, lightning and background settings).
+ Default environment properties for the entire scene (post-processing effects, lighting and background settings).
</brief_description>
<description>
The [code]WorldEnvironment[/code] node is used to configure the default [Environment] for the scene.
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index 7b7cc52547..9e83dfb55e 100755
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -280,7 +280,7 @@ def rstize_text(text, cclass):
escape_post = True
# Properly escape things like `[Node]s`
- if escape_post and post_text and post_text[0].isalnum(): # not punctuation, escape
+ if escape_post and post_text and (post_text[0].isalnum() or post_text[0] == "("): # not punctuation, escape
post_text = '\ ' + post_text
next_brac_pos = post_text.find('[', 0)
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index 50697b8834..2e3861f500 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -159,7 +159,7 @@ Error AudioDriverALSA::init() {
}
return err;
-};
+}
void AudioDriverALSA::thread_func(void *p_udata) {
@@ -232,25 +232,25 @@ void AudioDriverALSA::thread_func(void *p_udata) {
ad->stop_counting_ticks();
ad->unlock();
- };
+ }
ad->thread_exited = true;
-};
+}
void AudioDriverALSA::start() {
active = true;
-};
+}
int AudioDriverALSA::get_mix_rate() const {
return mix_rate;
-};
+}
AudioDriver::SpeakerMode AudioDriverALSA::get_speaker_mode() const {
return speaker_mode;
-};
+}
Array AudioDriverALSA::get_device_list() {
@@ -302,14 +302,14 @@ void AudioDriverALSA::lock() {
if (!thread || !mutex)
return;
mutex->lock();
-};
+}
void AudioDriverALSA::unlock() {
if (!thread || !mutex)
return;
mutex->unlock();
-};
+}
void AudioDriverALSA::finish_device() {
@@ -337,18 +337,15 @@ void AudioDriverALSA::finish() {
finish_device();
}
-AudioDriverALSA::AudioDriverALSA() {
-
- mutex = NULL;
- thread = NULL;
- pcm_handle = NULL;
-
- device_name = "Default";
- new_device = "Default";
-};
-
-AudioDriverALSA::~AudioDriverALSA(){
+AudioDriverALSA::AudioDriverALSA() :
+ thread(NULL),
+ mutex(NULL),
+ pcm_handle(NULL),
+ device_name("Default"),
+ new_device("Default") {
+}
-};
+AudioDriverALSA::~AudioDriverALSA() {
+}
#endif
diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp
index 850b90d59b..3d093b965a 100644
--- a/drivers/coreaudio/audio_driver_coreaudio.cpp
+++ b/drivers/coreaudio/audio_driver_coreaudio.cpp
@@ -159,7 +159,10 @@ Error AudioDriverCoreAudio::init() {
result = AudioUnitInitialize(audio_unit);
ERR_FAIL_COND_V(result != noErr, FAILED);
- return capture_init();
+ if (GLOBAL_GET("audio/enable_audio_input")) {
+ return capture_init();
+ }
+ return OK;
}
OSStatus AudioDriverCoreAudio::output_callback(void *inRefCon,
@@ -684,22 +687,18 @@ String AudioDriverCoreAudio::capture_get_device() {
#endif
-AudioDriverCoreAudio::AudioDriverCoreAudio() {
- audio_unit = NULL;
- input_unit = NULL;
- active = false;
- mutex = NULL;
-
- mix_rate = 0;
- channels = 2;
- capture_channels = 2;
-
- buffer_frames = 0;
-
+AudioDriverCoreAudio::AudioDriverCoreAudio() :
+ audio_unit(NULL),
+ input_unit(NULL),
+ active(false),
+ mutex(NULL),
+ device_name("Default"),
+ capture_device_name("Default"),
+ mix_rate(0),
+ channels(2),
+ capture_channels(2),
+ buffer_frames(0) {
samples_in.clear();
-
- device_name = "Default";
- capture_device_name = "Default";
}
AudioDriverCoreAudio::~AudioDriverCoreAudio(){};
diff --git a/drivers/coremidi/core_midi.cpp b/drivers/coremidi/core_midi.cpp
index 2ebbabaa38..a20aec04b5 100644
--- a/drivers/coremidi/core_midi.cpp
+++ b/drivers/coremidi/core_midi.cpp
@@ -112,13 +112,11 @@ PoolStringArray MIDIDriverCoreMidi::get_connected_inputs() {
return list;
}
-MIDIDriverCoreMidi::MIDIDriverCoreMidi() {
-
- client = 0;
+MIDIDriverCoreMidi::MIDIDriverCoreMidi() :
+ client(0) {
}
MIDIDriverCoreMidi::~MIDIDriverCoreMidi() {
-
close();
}
diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h
index 7c095e3798..dfdb3a6bba 100644
--- a/drivers/dummy/rasterizer_dummy.h
+++ b/drivers/dummy/rasterizer_dummy.h
@@ -63,7 +63,8 @@ public:
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) {}
- void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {}
+ void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {}
+
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) {}
diff --git a/drivers/gles2/rasterizer_scene_gles2.cpp b/drivers/gles2/rasterizer_scene_gles2.cpp
index 6eafdb0e1c..25d7df8ebc 100644
--- a/drivers/gles2/rasterizer_scene_gles2.cpp
+++ b/drivers/gles2/rasterizer_scene_gles2.cpp
@@ -708,7 +708,7 @@ void RasterizerSceneGLES2::environment_set_dof_blur_near(RID p_env, bool p_enabl
ERR_FAIL_COND(!env);
}
-void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {
+void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {
Environment *env = environment_owner.getornull(p_env);
ERR_FAIL_COND(!env);
}
@@ -2017,6 +2017,8 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
ShadowAtlas *shadow_atlas = shadow_atlas_owner.getornull(p_shadow_atlas);
+ Vector2 viewport_size = state.viewport_size;
+
Vector2 screen_pixel_size = state.screen_pixel_size;
bool use_radiance_map = false;
@@ -2335,6 +2337,8 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
state.scene_shader.set_uniform(SceneShaderGLES2::TIME, storage->frame.time[0]);
+ state.scene_shader.set_uniform(SceneShaderGLES2::VIEWPORT_SIZE, viewport_size);
+
state.scene_shader.set_uniform(SceneShaderGLES2::SCREEN_PIXEL_SIZE, screen_pixel_size);
}
@@ -2506,8 +2510,6 @@ void RasterizerSceneGLES2::render_scene(const Transform &p_cam_transform, const
}
current_fb = probe->fbo[p_reflection_probe_pass];
- state.screen_pixel_size.x = 1.0 / probe->probe_ptr->resolution;
- state.screen_pixel_size.y = 1.0 / probe->probe_ptr->resolution;
viewport_width = probe->probe_ptr->resolution;
viewport_height = probe->probe_ptr->resolution;
@@ -2518,11 +2520,16 @@ void RasterizerSceneGLES2::render_scene(const Transform &p_cam_transform, const
state.render_no_shadows = false;
current_fb = storage->frame.current_rt->fbo;
env = environment_owner.getornull(p_environment);
- state.screen_pixel_size.x = 1.0 / storage->frame.current_rt->width;
- state.screen_pixel_size.y = 1.0 / storage->frame.current_rt->height;
+
viewport_width = storage->frame.current_rt->width;
viewport_height = storage->frame.current_rt->height;
}
+
+ state.viewport_size.x = viewport_width;
+ state.viewport_size.y = viewport_height;
+ state.screen_pixel_size.x = 1.0 / viewport_width;
+ state.screen_pixel_size.y = 1.0 / viewport_height;
+
//push back the directional lights
if (p_light_cull_count) {
@@ -2587,9 +2594,30 @@ void RasterizerSceneGLES2::render_scene(const Transform &p_cam_transform, const
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ // clear color
+
+ Color clear_color(0, 0, 0, 0);
- storage->frame.clear_request = false;
+ if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
+ clear_color = Color(0, 0, 0, 0);
+ storage->frame.clear_request = false;
+ } else if (!env || env->bg_mode == VS::ENV_BG_CLEAR_COLOR || env->bg_mode == VS::ENV_BG_SKY) {
+ if (storage->frame.clear_request) {
+ clear_color = storage->frame.clear_request_color.to_linear();
+ storage->frame.clear_request = false;
+ }
+ } else if (env->bg_mode == VS::ENV_BG_CANVAS || env->bg_mode == VS::ENV_BG_COLOR || env->bg_mode == VS::ENV_BG_COLOR_SKY) {
+ clear_color = env->bg_color.to_linear();
+ storage->frame.clear_request = false;
+ } else {
+ storage->frame.clear_request = false;
+ }
+
+ if (!env || env->bg_mode != VS::ENV_BG_KEEP) {
+ glClearColor(clear_color.r, clear_color.g, clear_color.b, clear_color.a);
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glVertexAttrib4f(VS::ARRAY_COLOR, 1, 1, 1, 1);
diff --git a/drivers/gles2/rasterizer_scene_gles2.h b/drivers/gles2/rasterizer_scene_gles2.h
index 7d9920158f..4236554d9d 100644
--- a/drivers/gles2/rasterizer_scene_gles2.h
+++ b/drivers/gles2/rasterizer_scene_gles2.h
@@ -211,6 +211,8 @@ public:
bool render_no_shadows;
+ Vector2 viewport_size;
+
Vector2 screen_pixel_size;
} state;
@@ -369,33 +371,28 @@ public:
float fog_height_max;
float fog_height_curve;
- Environment() {
- bg_mode = VS::ENV_BG_CLEAR_COLOR;
- sky_custom_fov = 0.0;
- bg_energy = 1.0;
- sky_ambient = 0;
- ambient_energy = 1.0;
- ambient_sky_contribution = 0.0;
- canvas_max_layer = 0;
-
- fog_enabled = false;
- fog_color = Color(0.5, 0.5, 0.5);
- fog_sun_color = Color(0.8, 0.8, 0.0);
- fog_sun_amount = 0;
-
- fog_depth_enabled = true;
-
- fog_depth_begin = 10;
- fog_depth_end = 0;
- fog_depth_curve = 1;
-
- fog_transmit_enabled = true;
- fog_transmit_curve = 1;
-
- fog_height_enabled = false;
- fog_height_min = 0;
- fog_height_max = 100;
- fog_height_curve = 1;
+ Environment() :
+ bg_mode(VS::ENV_BG_CLEAR_COLOR),
+ sky_custom_fov(0.0),
+ bg_energy(1.0),
+ sky_ambient(0),
+ ambient_energy(1.0),
+ ambient_sky_contribution(0.0),
+ canvas_max_layer(0),
+ fog_enabled(false),
+ fog_color(Color(0.5, 0.5, 0.5)),
+ fog_sun_color(Color(0.8, 0.8, 0.0)),
+ fog_sun_amount(0),
+ fog_depth_enabled(true),
+ fog_depth_begin(10),
+ fog_depth_end(0),
+ fog_depth_curve(1),
+ fog_transmit_enabled(true),
+ fog_transmit_curve(1),
+ fog_height_enabled(false),
+ fog_height_min(0),
+ fog_height_max(100),
+ fog_height_curve(1) {
}
};
@@ -413,7 +410,7 @@ public:
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
- virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale);
+ virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale);
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
diff --git a/drivers/gles2/rasterizer_storage_gles2.h b/drivers/gles2/rasterizer_storage_gles2.h
index 5bdc65a0b5..ec7616b9f3 100644
--- a/drivers/gles2/rasterizer_storage_gles2.h
+++ b/drivers/gles2/rasterizer_storage_gles2.h
@@ -131,10 +131,9 @@ public:
}
} render, render_final, snap;
- Info() {
-
- texture_mem = 0;
- vertex_mem = 0;
+ Info() :
+ texture_mem(0),
+ vertex_mem(0) {
render.reset();
render_final.reset();
}
@@ -254,30 +253,31 @@ public:
VisualServer::TextureDetectCallback detect_normal;
void *detect_normal_ud;
- Texture() {
- alloc_width = 0;
- alloc_height = 0;
- target = 0;
-
- stored_cube_sides = 0;
- ignore_mipmaps = false;
- render_target = NULL;
- flags = width = height = 0;
- tex_id = 0;
- data_size = 0;
- format = Image::FORMAT_L8;
- active = false;
- compressed = false;
- total_data_size = 0;
- mipmaps = 0;
- detect_3d = NULL;
- detect_3d_ud = NULL;
- detect_srgb = NULL;
- detect_srgb_ud = NULL;
- detect_normal = NULL;
- detect_normal_ud = NULL;
- proxy = NULL;
- redraw_if_visible = false;
+ Texture() :
+ proxy(NULL),
+ flags(0),
+ width(0),
+ height(0),
+ alloc_width(0),
+ alloc_height(0),
+ format(Image::FORMAT_L8),
+ target(0),
+ data_size(0),
+ total_data_size(0),
+ ignore_mipmaps(false),
+ compressed(false),
+ mipmaps(0),
+ active(false),
+ tex_id(0),
+ stored_cube_sides(0),
+ render_target(NULL),
+ redraw_if_visible(false),
+ detect_3d(NULL),
+ detect_3d_ud(NULL),
+ detect_srgb(NULL),
+ detect_srgb_ud(NULL),
+ detect_normal(NULL),
+ detect_normal_ud(NULL) {
}
_ALWAYS_INLINE_ Texture *get_ptr() {
@@ -615,20 +615,15 @@ public:
int total_data_size;
- Surface() {
- array_byte_size = 0;
- index_array_byte_size = 0;
-
- array_len = 0;
- index_array_len = 0;
-
- mesh = NULL;
-
- primitive = VS::PRIMITIVE_POINTS;
-
- active = false;
-
- total_data_size = 0;
+ Surface() :
+ mesh(NULL),
+ array_len(0),
+ index_array_len(0),
+ array_byte_size(0),
+ index_array_byte_size(0),
+ primitive(VS::PRIMITIVE_POINTS),
+ active(false),
+ total_data_size(0) {
}
};
@@ -658,9 +653,9 @@ public:
}
}
- Mesh() {
- blend_shape_mode = VS::BLEND_SHAPE_MODE_NORMALIZED;
- blend_shape_count = 0;
+ Mesh() :
+ blend_shape_count(0),
+ blend_shape_mode(VS::BLEND_SHAPE_MODE_NORMALIZED) {
}
};
@@ -731,22 +726,18 @@ public:
bool dirty_data;
MultiMesh() :
+ size(0),
+ transform_format(VS::MULTIMESH_TRANSFORM_2D),
+ color_format(VS::MULTIMESH_COLOR_NONE),
+ custom_data_format(VS::MULTIMESH_CUSTOM_DATA_NONE),
update_list(this),
- mesh_list(this) {
- dirty_aabb = true;
- dirty_data = true;
-
- xform_floats = 0;
- color_floats = 0;
- custom_data_floats = 0;
-
- visible_instances = -1;
-
- size = 0;
-
- transform_format = VS::MULTIMESH_TRANSFORM_2D;
- color_format = VS::MULTIMESH_COLOR_NONE;
- custom_data_format = VS::MULTIMESH_CUSTOM_DATA_NONE;
+ mesh_list(this),
+ visible_instances(-1),
+ xform_floats(0),
+ color_floats(0),
+ custom_data_floats(0),
+ dirty_aabb(true),
+ dirty_data(true) {
}
};
@@ -847,10 +838,10 @@ public:
Set<RasterizerScene::InstanceBase *> instances;
Skeleton() :
+ use_2d(false),
+ size(0),
+ tex_id(0),
update_list(this) {
- tex_id = 0;
- size = 0;
- use_2d = false;
}
};
@@ -1121,11 +1112,11 @@ public:
GLuint color;
- Effect() {
- fbo = 0;
- width = 0;
- height = 0;
- color = 0;
+ Effect() :
+ fbo(0),
+ width(0),
+ height(0),
+ color(0) {
}
};
@@ -1140,22 +1131,17 @@ public:
RID texture;
- RenderTarget() {
- fbo = 0;
-
- color = 0;
- depth = 0;
-
- width = 0;
- height = 0;
-
- for (int i = 0; i < RENDER_TARGET_FLAG_MAX; i++) {
+ RenderTarget() :
+ fbo(0),
+ color(0),
+ depth(0),
+ width(0),
+ height(0),
+ used_in_frame(false),
+ msaa(VS::VIEWPORT_MSAA_DISABLED) {
+ for (int i = 0; i < RENDER_TARGET_FLAG_MAX; ++i) {
flags[i] = false;
}
-
- used_in_frame = false;
-
- msaa = VS::VIEWPORT_MSAA_DISABLED;
}
};
diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp
index d52be09cac..45b0d695a3 100644
--- a/drivers/gles2/shader_compiler_gles2.cpp
+++ b/drivers/gles2/shader_compiler_gles2.cpp
@@ -814,8 +814,8 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
/** SPATIAL SHADER **/
actions[VS::SHADER_SPATIAL].renames["WORLD_MATRIX"] = "world_transform";
- actions[VS::SHADER_SPATIAL].renames["INV_CAMERA_MATRIX"] = "camera_matrix";
- actions[VS::SHADER_SPATIAL].renames["CAMERA_MATRIX"] = "camera_inverse_matrix";
+ actions[VS::SHADER_SPATIAL].renames["INV_CAMERA_MATRIX"] = "camera_inverse_matrix";
+ actions[VS::SHADER_SPATIAL].renames["CAMERA_MATRIX"] = "camera_matrix";
actions[VS::SHADER_SPATIAL].renames["PROJECTION_MATRIX"] = "projection_matrix";
actions[VS::SHADER_SPATIAL].renames["INV_PROJECTION_MATRIX"] = "projection_inverse_matrix";
actions[VS::SHADER_SPATIAL].renames["MODELVIEW_MATRIX"] = "modelview";
@@ -931,7 +931,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() {
actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color";
actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz";
actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass";
- actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "active";
+ actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active";
actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart";
actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom";
actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform";
diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp
index c5a67d4e75..84bd413abb 100644
--- a/drivers/gles2/shader_gles2.cpp
+++ b/drivers/gles2/shader_gles2.cpp
@@ -99,7 +99,7 @@ void ShaderGLES2::bind_uniforms() {
const Map<uint32_t, CameraMatrix>::Element *C = uniform_cameras.front();
while (C) {
- int idx = E->key();
+ int idx = C->key();
int location = version->uniform_location[idx];
if (location < 0) {
diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl
index bc83b69b49..30dc55cc4c 100644
--- a/drivers/gles2/shaders/scene.glsl
+++ b/drivers/gles2/shaders/scene.glsl
@@ -84,7 +84,7 @@ uniform highp mat4 world_transform;
uniform highp float time;
-
+uniform highp vec2 viewport_size;
#ifdef RENDER_DEPTH
uniform float light_bias;
@@ -679,6 +679,8 @@ uniform highp mat4 world_transform;
uniform highp float time;
+uniform highp vec2 viewport_size;
+
#if defined(SCREEN_UV_USED)
uniform vec2 screen_pixel_size;
#endif
@@ -1121,7 +1123,7 @@ LIGHT_SHADER_CODE
float NdotL = dot(N, L);
float cNdotL = max(NdotL, 0.0); // clamped NdotL
float NdotV = dot(N, V);
- float cNdotV = max(NdotV, 0.0);
+ float cNdotV = max(abs(NdotV), 1e-6);
#if defined(DIFFUSE_BURLEY) || defined(SPECULAR_BLINN) || defined(SPECULAR_SCHLICK_GGX) || defined(LIGHT_USE_CLEARCOAT)
vec3 H = normalize(V + L);
@@ -1382,6 +1384,7 @@ void main() {
discard;
#endif
highp vec3 vertex = vertex_interp;
+ vec3 view = -normalize(vertex_interp);
vec3 albedo = vec3(1.0);
vec3 transmission = vec3(0.0);
float metallic = 0.0;
@@ -1455,7 +1458,7 @@ FRAGMENT_SHADER_CODE
vec3 diffuse_light = vec3(0.0, 0.0, 0.0);
vec3 ambient_light = vec3(0.0, 0.0, 0.0);
- vec3 eye_position = -normalize(vertex_interp);
+ vec3 eye_position = view;
#if defined(ALPHA_SCISSOR_USED)
if (alpha < alpha_scissor) {
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index e0c8d3af52..ffe9e1c831 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -846,7 +846,7 @@ void RasterizerSceneGLES3::environment_set_dof_blur_near(RID p_env, bool p_enabl
env->dof_blur_near_amount = p_amount;
env->dof_blur_near_quality = p_quality;
}
-void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) {
+void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) {
Environment *env = environment_owner.getornull(p_env);
ERR_FAIL_COND(!env);
@@ -859,6 +859,7 @@ void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_
env->glow_blend_mode = p_blend_mode;
env->glow_hdr_bleed_threshold = p_hdr_bleed_threshold;
env->glow_hdr_bleed_scale = p_hdr_bleed_scale;
+ env->glow_hdr_luminance_cap = p_hdr_luminance_cap;
env->glow_bicubic_upscale = p_bicubic_upscale;
}
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
@@ -3898,6 +3899,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_STRENGTH, env->glow_strength);
+ state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LUMINANCE_CAP, env->glow_hdr_luminance_cap);
glActiveTexture(GL_TEXTURE0);
if (i == 0) {
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index f3157d5a46..1d84fb487b 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -404,6 +404,7 @@ public:
VS::EnvironmentGlowBlendMode glow_blend_mode;
float glow_hdr_bleed_threshold;
float glow_hdr_bleed_scale;
+ float glow_hdr_luminance_cap;
bool glow_bicubic_upscale;
VS::EnvironmentToneMapper tone_mapper;
@@ -449,88 +450,77 @@ public:
float fog_height_max;
float fog_height_curve;
- Environment() {
- bg_mode = VS::ENV_BG_CLEAR_COLOR;
- sky_custom_fov = 0.0;
- bg_energy = 1.0;
- sky_ambient = 0;
- ambient_energy = 1.0;
- ambient_sky_contribution = 0.0;
- canvas_max_layer = 0;
-
- ssr_enabled = false;
- ssr_max_steps = 64;
- ssr_fade_in = 0.15;
- ssr_fade_out = 2.0;
- ssr_depth_tolerance = 0.2;
- ssr_roughness = true;
-
- ssao_enabled = false;
- ssao_intensity = 1.0;
- ssao_radius = 1.0;
- ssao_intensity2 = 1.0;
- ssao_radius2 = 0.0;
- ssao_bias = 0.01;
- ssao_light_affect = 0;
- ssao_ao_channel_affect = 0;
- ssao_filter = VS::ENV_SSAO_BLUR_3x3;
- ssao_quality = VS::ENV_SSAO_QUALITY_LOW;
- ssao_bilateral_sharpness = 4;
-
- tone_mapper = VS::ENV_TONE_MAPPER_LINEAR;
- tone_mapper_exposure = 1.0;
- tone_mapper_exposure_white = 1.0;
- auto_exposure = false;
- auto_exposure_speed = 0.5;
- auto_exposure_min = 0.05;
- auto_exposure_max = 8;
- auto_exposure_grey = 0.4;
-
- glow_enabled = false;
- glow_levels = (1 << 2) | (1 << 4);
- glow_intensity = 0.8;
- glow_strength = 1.0;
- glow_bloom = 0.0;
- glow_blend_mode = VS::GLOW_BLEND_MODE_SOFTLIGHT;
- glow_hdr_bleed_threshold = 1.0;
- glow_hdr_bleed_scale = 2.0;
- glow_bicubic_upscale = false;
-
- dof_blur_far_enabled = false;
- dof_blur_far_distance = 10;
- dof_blur_far_transition = 5;
- dof_blur_far_amount = 0.1;
- dof_blur_far_quality = VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
-
- dof_blur_near_enabled = false;
- dof_blur_near_distance = 2;
- dof_blur_near_transition = 1;
- dof_blur_near_amount = 0.1;
- dof_blur_near_quality = VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
-
- adjustments_enabled = false;
- adjustments_brightness = 1.0;
- adjustments_contrast = 1.0;
- adjustments_saturation = 1.0;
-
- fog_enabled = false;
- fog_color = Color(0.5, 0.5, 0.5);
- fog_sun_color = Color(0.8, 0.8, 0.0);
- fog_sun_amount = 0;
-
- fog_depth_enabled = true;
-
- fog_depth_begin = 10;
- fog_depth_end = 0;
- fog_depth_curve = 1;
-
- fog_transmit_enabled = true;
- fog_transmit_curve = 1;
-
- fog_height_enabled = false;
- fog_height_min = 0;
- fog_height_max = 100;
- fog_height_curve = 1;
+ Environment() :
+ bg_mode(VS::ENV_BG_CLEAR_COLOR),
+ sky_custom_fov(0.0),
+ bg_energy(1.0),
+ sky_ambient(0),
+ ambient_energy(1.0),
+ ambient_sky_contribution(0.0),
+ canvas_max_layer(0),
+ ssr_enabled(false),
+ ssr_max_steps(64),
+ ssr_fade_in(0.15),
+ ssr_fade_out(2.0),
+ ssr_depth_tolerance(0.2),
+ ssr_roughness(true),
+ ssao_enabled(false),
+ ssao_intensity(1.0),
+ ssao_radius(1.0),
+ ssao_intensity2(1.0),
+ ssao_radius2(0.0),
+ ssao_bias(0.01),
+ ssao_light_affect(0),
+ ssao_ao_channel_affect(0),
+ ssao_quality(VS::ENV_SSAO_QUALITY_LOW),
+ ssao_bilateral_sharpness(4),
+ ssao_filter(VS::ENV_SSAO_BLUR_3x3),
+ glow_enabled(false),
+ glow_levels((1 << 2) | (1 << 4)),
+ glow_intensity(0.8),
+ glow_strength(1.0),
+ glow_bloom(0.0),
+ glow_blend_mode(VS::GLOW_BLEND_MODE_SOFTLIGHT),
+ glow_hdr_bleed_threshold(1.0),
+ glow_hdr_bleed_scale(2.0),
+ glow_hdr_luminance_cap(12.0),
+ glow_bicubic_upscale(false),
+ tone_mapper(VS::ENV_TONE_MAPPER_LINEAR),
+ tone_mapper_exposure(1.0),
+ tone_mapper_exposure_white(1.0),
+ auto_exposure(false),
+ auto_exposure_speed(0.5),
+ auto_exposure_min(0.05),
+ auto_exposure_max(8),
+ auto_exposure_grey(0.4),
+ dof_blur_far_enabled(false),
+ dof_blur_far_distance(10),
+ dof_blur_far_transition(5),
+ dof_blur_far_amount(0.1),
+ dof_blur_far_quality(VS::ENV_DOF_BLUR_QUALITY_MEDIUM),
+ dof_blur_near_enabled(false),
+ dof_blur_near_distance(2),
+ dof_blur_near_transition(1),
+ dof_blur_near_amount(0.1),
+ dof_blur_near_quality(VS::ENV_DOF_BLUR_QUALITY_MEDIUM),
+ adjustments_enabled(false),
+ adjustments_brightness(1.0),
+ adjustments_contrast(1.0),
+ adjustments_saturation(1.0),
+ fog_enabled(false),
+ fog_color(Color(0.5, 0.5, 0.5)),
+ fog_sun_color(Color(0.8, 0.8, 0.0)),
+ fog_sun_amount(0),
+ fog_depth_enabled(true),
+ fog_depth_begin(10),
+ fog_depth_end(0),
+ fog_depth_curve(1),
+ fog_transmit_enabled(true),
+ fog_transmit_curve(1),
+ fog_height_enabled(false),
+ fog_height_min(0),
+ fog_height_max(100),
+ fog_height_curve(1) {
}
};
@@ -548,7 +538,7 @@ public:
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, VS::EnvironmentDOFBlurQuality p_quality);
- virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale);
+ virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale);
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
@@ -641,9 +631,9 @@ public:
Vector3 bounds;
Transform transform_to_data;
- GIProbeInstance() {
- probe = NULL;
- tex_cache = 0;
+ GIProbeInstance() :
+ probe(NULL),
+ tex_cache(0) {
}
};
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 235c799a55..2b038fcc0e 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -7673,7 +7673,7 @@ void RasterizerStorageGLES3::initialize() {
config.etc2_supported = true;
config.hdr_supported = false;
config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_dxt1") || config.extensions.has("GL_EXT_texture_compression_s3tc") || config.extensions.has("WEBGL_compressed_texture_s3tc");
- config.rgtc_supported = config.extensions.has("GL_EXT_texture_compression_rgtc") || config.extensions.has("GL_ARB_texture_compression_rgtc");
+ config.rgtc_supported = config.extensions.has("GL_EXT_texture_compression_rgtc") || config.extensions.has("GL_ARB_texture_compression_rgtc") || config.extensions.has("EXT_texture_compression_rgtc");
#endif
config.pvrtc_supported = config.extensions.has("GL_IMG_texture_compression_pvrtc");
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 398ffdeb82..958086f6c7 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -285,29 +285,30 @@ public:
VisualServer::TextureDetectCallback detect_normal;
void *detect_normal_ud;
- Texture() {
-
- using_srgb = false;
- stored_cube_sides = 0;
- ignore_mipmaps = false;
- render_target = NULL;
- flags = width = height = 0;
- tex_id = 0;
- data_size = 0;
- format = Image::FORMAT_L8;
- active = false;
- compressed = false;
- total_data_size = 0;
- target = GL_TEXTURE_2D;
- mipmaps = 0;
- detect_3d = NULL;
- detect_3d_ud = NULL;
- detect_srgb = NULL;
- detect_srgb_ud = NULL;
- detect_normal = NULL;
- detect_normal_ud = NULL;
- proxy = NULL;
- redraw_if_visible = false;
+ Texture() :
+ proxy(NULL),
+ flags(0),
+ width(0),
+ height(0),
+ format(Image::FORMAT_L8),
+ target(GL_TEXTURE_2D),
+ data_size(0),
+ compressed(false),
+ total_data_size(0),
+ ignore_mipmaps(false),
+ mipmaps(0),
+ active(false),
+ tex_id(0),
+ using_srgb(false),
+ redraw_if_visible(false),
+ stored_cube_sides(0),
+ render_target(NULL),
+ detect_3d(NULL),
+ detect_3d_ud(NULL),
+ detect_srgb(NULL),
+ detect_srgb_ud(NULL),
+ detect_normal(NULL),
+ detect_normal_ud(NULL) {
}
_ALWAYS_INLINE_ Texture *get_ptr() {
@@ -553,16 +554,16 @@ public:
bool is_animated_cache;
Material() :
+ shader(NULL),
+ ubo_id(0),
+ ubo_size(0),
list(this),
- dirty_list(this) {
- can_cast_shadow_cache = false;
- is_animated_cache = false;
- shader = NULL;
- line_width = 1.0;
- ubo_id = 0;
- ubo_size = 0;
- last_pass = 0;
- render_priority = 0;
+ dirty_list(this),
+ line_width(1.0),
+ render_priority(0),
+ last_pass(0),
+ can_cast_shadow_cache(false),
+ is_animated_cache(false) {
}
};
@@ -661,27 +662,24 @@ public:
int total_data_size;
- Surface() {
-
- array_byte_size = 0;
- index_array_byte_size = 0;
- mesh = NULL;
- format = 0;
- array_id = 0;
- vertex_id = 0;
- index_id = 0;
- array_len = 0;
+ Surface() :
+ mesh(NULL),
+ format(0),
+ array_id(0),
+ vertex_id(0),
+ index_id(0),
+ index_wireframe_id(0),
+ array_wireframe_id(0),
+ instancing_array_wireframe_id(0),
+ index_wireframe_len(0),
+ array_len(0),
+ index_array_len(0),
+ array_byte_size(0),
+ index_array_byte_size(0),
+ primitive(VS::PRIMITIVE_POINTS),
+ active(false),
+ total_data_size(0) {
type = GEOMETRY_SURFACE;
- primitive = VS::PRIMITIVE_POINTS;
- index_array_len = 0;
- active = false;
-
- total_data_size = 0;
-
- index_wireframe_id = 0;
- array_wireframe_id = 0;
- instancing_array_wireframe_id = 0;
- index_wireframe_len = 0;
}
~Surface() {
@@ -708,11 +706,11 @@ public:
}
}
- Mesh() {
- blend_shape_mode = VS::BLEND_SHAPE_MODE_NORMALIZED;
- blend_shape_count = 0;
- last_pass = 0;
- active = false;
+ Mesh() :
+ active(false),
+ blend_shape_count(0),
+ blend_shape_mode(VS::BLEND_SHAPE_MODE_NORMALIZED),
+ last_pass(0) {
}
};
@@ -780,19 +778,19 @@ public:
bool dirty_data;
MultiMesh() :
+ size(0),
+ transform_format(VS::MULTIMESH_TRANSFORM_2D),
+ color_format(VS::MULTIMESH_COLOR_NONE),
+ custom_data_format(VS::MULTIMESH_CUSTOM_DATA_NONE),
update_list(this),
- mesh_list(this) {
- dirty_aabb = true;
- dirty_data = true;
- xform_floats = 0;
- color_floats = 0;
- custom_data_floats = 0;
- visible_instances = -1;
- size = 0;
- buffer = 0;
- transform_format = VS::MULTIMESH_TRANSFORM_2D;
- color_format = VS::MULTIMESH_COLOR_NONE;
- custom_data_format = VS::MULTIMESH_CUSTOM_DATA_NONE;
+ mesh_list(this),
+ buffer(0),
+ visible_instances(-1),
+ xform_floats(0),
+ color_floats(0),
+ custom_data_floats(0),
+ dirty_aabb(true),
+ dirty_data(true) {
}
};
@@ -889,11 +887,10 @@ public:
Transform2D base_transform_2d;
Skeleton() :
+ use_2d(false),
+ size(0),
+ texture(0),
update_list(this) {
- size = 0;
-
- use_2d = false;
- texture = 0;
}
};
@@ -1174,37 +1171,31 @@ public:
Transform emission_transform;
Particles() :
- particle_element(this) {
- cycle_number = 0;
- emitting = false;
- one_shot = false;
- amount = 0;
- lifetime = 1.0;
- pre_process_time = 0.0;
- explosiveness = 0.0;
- randomness = 0.0;
- use_local_coords = true;
- fixed_fps = 0;
- fractional_delta = false;
- frame_remainder = 0;
- histories_enabled = false;
- speed_scale = 1.0;
- random_seed = 0;
-
- restart_request = false;
-
- custom_aabb = AABB(Vector3(-4, -4, -4), Vector3(8, 8, 8));
-
- draw_order = VS::PARTICLES_DRAW_ORDER_INDEX;
+ inactive(true),
+ inactive_time(0.0),
+ emitting(false),
+ one_shot(false),
+ amount(0),
+ lifetime(1.0),
+ pre_process_time(0.0),
+ explosiveness(0.0),
+ randomness(0.0),
+ restart_request(false),
+ custom_aabb(AABB(Vector3(-4, -4, -4), Vector3(8, 8, 8))),
+ use_local_coords(true),
+ draw_order(VS::PARTICLES_DRAW_ORDER_INDEX),
+ histories_enabled(false),
+ particle_element(this),
+ prev_ticks(0),
+ random_seed(0),
+ cycle_number(0),
+ speed_scale(1.0),
+ fixed_fps(0),
+ fractional_delta(false),
+ frame_remainder(0),
+ clear(true) {
particle_buffers[0] = 0;
particle_buffers[1] = 0;
-
- prev_ticks = 0;
-
- clear = true;
- inactive = true;
- inactive_time = 0.0;
-
glGenBuffers(2, particle_buffers);
glGenVertexArrays(2, particle_vaos);
}
@@ -1309,9 +1300,9 @@ public:
GLuint color;
int levels;
- MipMaps() {
- color = 0;
- levels = 0;
+ MipMaps() :
+ color(0),
+ levels(0) {
}
};
@@ -1326,10 +1317,10 @@ public:
Vector<GLuint> depth_mipmap_fbos; //fbos for depth mipmapsla ver
- SSAO() {
+ SSAO() :
+ linear_depth(0) {
blur_fbo[0] = 0;
blur_fbo[1] = 0;
- linear_depth = 0;
}
} ssao;
@@ -1341,7 +1332,8 @@ public:
GLuint fbo;
GLuint color;
- Exposure() { fbo = 0; }
+ Exposure() :
+ fbo(0) {}
} exposure;
uint64_t last_exposure_tick;
@@ -1355,26 +1347,22 @@ public:
RID texture;
- RenderTarget() {
-
- msaa = VS::VIEWPORT_MSAA_DISABLED;
- width = 0;
- height = 0;
- depth = 0;
- fbo = 0;
+ RenderTarget() :
+ fbo(0),
+ depth(0),
+ last_exposure_tick(0),
+ width(0),
+ height(0),
+ used_in_frame(false),
+ msaa(VS::VIEWPORT_MSAA_DISABLED) {
exposure.fbo = 0;
buffers.fbo = 0;
- used_in_frame = false;
-
for (int i = 0; i < RENDER_TARGET_FLAG_MAX; i++) {
flags[i] = false;
}
flags[RENDER_TARGET_HDR] = true;
-
buffers.active = false;
buffers.effects_active = false;
-
- last_exposure_tick = 0;
}
};
diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp
index 2372dfb17e..2a2280e8a4 100644
--- a/drivers/gles3/shader_compiler_gles3.cpp
+++ b/drivers/gles3/shader_compiler_gles3.cpp
@@ -786,7 +786,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
/** CANVAS ITEM SHADER **/
actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX"] = "outvec.xy";
- actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv_interp";
+ actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv";
actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "gl_PointSize";
actions[VS::SHADER_CANVAS_ITEM].renames["WORLD_MATRIX"] = "modelview_matrix";
@@ -948,7 +948,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color";
actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz";
actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass";
- actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "active";
+ actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active";
actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart";
actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom";
actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform";
diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl
index 86d8cf560e..974eff86f3 100644
--- a/drivers/gles3/shaders/canvas.glsl
+++ b/drivers/gles3/shaders/canvas.glsl
@@ -145,6 +145,8 @@ void main() {
#define extra_matrix extra_matrix_instance
+ //for compatibility with the fragment shader we need to use uv here
+ vec2 uv = uv_interp;
{
/* clang-format off */
@@ -153,6 +155,8 @@ VERTEX_SHADER_CODE
/* clang-format on */
}
+ uv_interp = uv;
+
#ifdef USE_NINEPATCH
pixel_size_interp = abs(dst_rect.zw) * vertex;
@@ -477,7 +481,7 @@ void main() {
#if defined(NORMALMAP_USED)
vec3 normal_map = vec3(0.0, 0.0, 1.0);
- normal_used=true;
+ normal_used = true;
#endif
/* clang-format off */
diff --git a/drivers/gles3/shaders/effect_blur.glsl b/drivers/gles3/shaders/effect_blur.glsl
index b67d06bc10..fc15ca31b1 100644
--- a/drivers/gles3/shaders/effect_blur.glsl
+++ b/drivers/gles3/shaders/effect_blur.glsl
@@ -94,6 +94,7 @@ uniform sampler2D source_dof_original; //texunit:2
uniform float exposure;
uniform float white;
+uniform highp float luminance_cap;
#ifdef GLOW_USE_AUTO_EXPOSURE
@@ -271,7 +272,7 @@ void main() {
float luminance = max(frag_color.r, max(frag_color.g, frag_color.b));
float feedback = max(smoothstep(glow_hdr_threshold, glow_hdr_threshold + glow_hdr_scale, luminance), glow_bloom);
- frag_color *= feedback;
+ frag_color = min(frag_color * feedback, vec4(luminance_cap));
#endif
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index e2e3584304..ff273e4e9f 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -1565,6 +1565,7 @@ void main() {
//lay out everything, whathever is unused is optimized away anyway
highp vec3 vertex = vertex_interp;
+ vec3 view = -normalize(vertex_interp);
vec3 albedo = vec3(1.0);
vec3 transmission = vec3(0.0);
float metallic = 0.0;
@@ -1590,8 +1591,8 @@ void main() {
#endif
#if defined(ENABLE_TANGENT_INTERP) || defined(ENABLE_NORMALMAP) || defined(LIGHT_USE_ANISOTROPY)
- vec3 binormal = normalize(binormal_interp);// * side;
- vec3 tangent = normalize(tangent_interp);// * side;
+ vec3 binormal = normalize(binormal_interp);
+ vec3 tangent = normalize(tangent_interp);
#else
vec3 binormal = vec3(0.0);
vec3 tangent = vec3(0.0);
@@ -1699,7 +1700,7 @@ FRAGMENT_SHADER_CODE
vec3 ambient_light;
vec3 env_reflection_light = vec3(0.0, 0.0, 0.0);
- vec3 eye_vec = -normalize(vertex_interp);
+ vec3 eye_vec = view;
#ifdef USE_RADIANCE_MAP
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index 720824d451..4988557dcb 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -743,35 +743,28 @@ String AudioDriverPulseAudio::capture_get_device() {
return name;
}
-AudioDriverPulseAudio::AudioDriverPulseAudio() {
-
- pa_ml = NULL;
- pa_ctx = NULL;
- pa_str = NULL;
- pa_rec_str = NULL;
-
- mutex = NULL;
- thread = NULL;
-
- device_name = "Default";
- new_device = "Default";
- default_device = "";
-
+AudioDriverPulseAudio::AudioDriverPulseAudio() :
+ thread(NULL),
+ mutex(NULL),
+ pa_ml(NULL),
+ pa_ctx(NULL),
+ pa_str(NULL),
+ pa_rec_str(NULL),
+ device_name("Default"),
+ new_device("Default"),
+ default_device(""),
+ mix_rate(0),
+ buffer_frames(0),
+ pa_buffer_size(0),
+ channels(0),
+ pa_ready(0),
+ pa_status(0),
+ active(false),
+ thread_exited(false),
+ exit_thread(false),
+ latency(0) {
samples_in.clear();
samples_out.clear();
-
- mix_rate = 0;
- buffer_frames = 0;
- pa_buffer_size = 0;
- channels = 0;
- pa_ready = 0;
- pa_status = 0;
-
- active = false;
- thread_exited = false;
- exit_thread = false;
-
- latency = 0;
}
AudioDriverPulseAudio::~AudioDriverPulseAudio() {
diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp
index bc6ceb1e7e..80537315af 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.cpp
+++ b/drivers/rtaudio/audio_driver_rtaudio.cpp
@@ -194,13 +194,12 @@ void AudioDriverRtAudio::finish() {
}
}
-AudioDriverRtAudio::AudioDriverRtAudio() {
-
- active = false;
- mutex = NULL;
- dac = NULL;
- mix_rate = DEFAULT_MIX_RATE;
- speaker_mode = SPEAKER_MODE_STEREO;
+AudioDriverRtAudio::AudioDriverRtAudio() :
+ speaker_mode(SPEAKER_MODE_STEREO),
+ mutex(NULL),
+ dac(NULL),
+ mix_rate(DEFAULT_MIX_RATE),
+ active(false) {
}
#endif
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index 3b97b95f7c..10f6be3cbe 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -309,11 +309,10 @@ FileAccess *FileAccessUnix::create_libc() {
CloseNotificationFunc FileAccessUnix::close_notification_func = NULL;
-FileAccessUnix::FileAccessUnix() {
-
- f = NULL;
- flags = 0;
- last_error = OK;
+FileAccessUnix::FileAccessUnix() :
+ f(NULL),
+ flags(0),
+ last_error(OK) {
}
FileAccessUnix::~FileAccessUnix() {
diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp
index 833b17f122..740b1edb9c 100644
--- a/drivers/unix/net_socket_posix.cpp
+++ b/drivers/unix/net_socket_posix.cpp
@@ -167,10 +167,10 @@ void NetSocketPosix::cleanup() {
#endif
}
-NetSocketPosix::NetSocketPosix() {
- _sock = SOCK_EMPTY;
- _ip_type = IP::TYPE_NONE;
- _is_stream = false;
+NetSocketPosix::NetSocketPosix() :
+ _sock(SOCK_EMPTY),
+ _ip_type(IP::TYPE_NONE),
+ _is_stream(false) {
}
NetSocketPosix::~NetSocketPosix() {
diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h
index 3d94f3ba49..71f56cfb5b 100644
--- a/drivers/wasapi/audio_driver_wasapi.h
+++ b/drivers/wasapi/audio_driver_wasapi.h
@@ -58,17 +58,17 @@ class AudioDriverWASAPI : public AudioDriver {
String device_name;
String new_device;
- AudioDeviceWASAPI() {
- audio_client = NULL;
- render_client = NULL;
- capture_client = NULL;
- active = false;
- format_tag = 0;
- bits_per_sample = 0;
- channels = 0;
- frame_size = 0;
- device_name = "Default";
- new_device = "Default";
+ AudioDeviceWASAPI() :
+ audio_client(NULL),
+ render_client(NULL),
+ capture_client(NULL),
+ active(false),
+ format_tag(0),
+ bits_per_sample(0),
+ channels(0),
+ frame_size(0),
+ device_name("Default"),
+ new_device("Default") {
}
};
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index 2582478259..a289945aa7 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -307,11 +307,10 @@ uint64_t FileAccessWindows::_get_modified_time(const String &p_file) {
}
}
-FileAccessWindows::FileAccessWindows() {
-
- f = NULL;
- flags = 0;
- last_error = OK;
+FileAccessWindows::FileAccessWindows() :
+ f(NULL),
+ flags(0),
+ last_error(OK) {
}
FileAccessWindows::~FileAccessWindows() {
diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp
index 52dcfacdf8..dbccad3b5d 100644
--- a/drivers/windows/thread_windows.cpp
+++ b/drivers/windows/thread_windows.cpp
@@ -93,9 +93,8 @@ void ThreadWindows::make_default() {
wait_to_finish_func = wait_to_finish_func_windows;
}
-ThreadWindows::ThreadWindows() {
-
- handle = NULL;
+ThreadWindows::ThreadWindows() :
+ handle(NULL) {
}
ThreadWindows::~ThreadWindows() {
diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp
index 452a1105ca..ce2f0db0fc 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.cpp
+++ b/drivers/xaudio2/audio_driver_xaudio2.cpp
@@ -91,7 +91,7 @@ Error AudioDriverXAudio2::init() {
thread = Thread::create(AudioDriverXAudio2::thread_func, this);
return OK;
-};
+}
void AudioDriverXAudio2::thread_func(void *p_udata) {
@@ -131,10 +131,10 @@ void AudioDriverXAudio2::thread_func(void *p_udata) {
WaitForSingleObject(ad->voice_callback.buffer_end_event, INFINITE);
}
}
- };
+ }
ad->thread_exited = true;
-};
+}
void AudioDriverXAudio2::start() {
@@ -144,17 +144,17 @@ void AudioDriverXAudio2::start() {
ERR_EXPLAIN("XAudio2 start error " + itos(hr));
ERR_FAIL();
}
-};
+}
int AudioDriverXAudio2::get_mix_rate() const {
return mix_rate;
-};
+}
AudioDriver::SpeakerMode AudioDriverXAudio2::get_speaker_mode() const {
return speaker_mode;
-};
+}
float AudioDriverXAudio2::get_latency() {
@@ -172,13 +172,13 @@ void AudioDriverXAudio2::lock() {
if (!thread || !mutex)
return;
mutex->lock();
-};
+}
void AudioDriverXAudio2::unlock() {
if (!thread || !mutex)
return;
mutex->unlock();
-};
+}
void AudioDriverXAudio2::finish() {
@@ -195,12 +195,12 @@ void AudioDriverXAudio2::finish() {
if (samples_in) {
memdelete_arr(samples_in);
- };
+ }
if (samples_out[0]) {
for (int i = 0; i < AUDIO_BUFFERS; i++) {
memdelete_arr(samples_out[i]);
}
- };
+ }
mastering_voice->DestroyVoice();
@@ -208,20 +208,18 @@ void AudioDriverXAudio2::finish() {
if (mutex)
memdelete(mutex);
thread = NULL;
-};
-
-AudioDriverXAudio2::AudioDriverXAudio2() {
+}
- mutex = NULL;
- thread = NULL;
+AudioDriverXAudio2::AudioDriverXAudio2() :
+ thread(NULL),
+ mutex(NULL),
+ current_buffer(0) {
wave_format = { 0 };
for (int i = 0; i < AUDIO_BUFFERS; i++) {
xaudio_buffer[i] = { 0 };
samples_out[i] = 0;
}
- current_buffer = 0;
-};
-
-AudioDriverXAudio2::~AudioDriverXAudio2(){
+}
-};
+AudioDriverXAudio2::~AudioDriverXAudio2() {
+}
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 2a11f70274..a0a8e9459d 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -673,7 +673,7 @@ void CodeTextEditor::_reset_zoom() {
if (font.is_valid()) {
EditorSettings::get_singleton()->set("interface/editor/code_font_size", 14);
font->set_size(14);
- zoom_nb->set_text("100%");
+ font_size_nb->set_text("14 (100%)");
}
}
@@ -748,7 +748,7 @@ bool CodeTextEditor::_add_font_size(int p_delta) {
if (font.is_valid()) {
int new_size = CLAMP(font->get_size() + p_delta, 8 * EDSCALE, 96 * EDSCALE);
- zoom_nb->set_text(itos(100 * new_size / (14 * EDSCALE)) + "%");
+ font_size_nb->set_text(itos(new_size) + " (" + itos(100 * new_size / (14 * EDSCALE)) + "%)");
if (new_size != font->get_size()) {
EditorSettings::get_singleton()->set("interface/editor/code_font_size", new_size / EDSCALE);
@@ -1162,6 +1162,9 @@ void CodeTextEditor::_on_settings_change() {
_update_font();
+ font_size = EditorSettings::get_singleton()->get("interface/editor/code_font_size");
+ font_size_nb->set_text(itos(font_size) + " (" + itos(100 * font_size / (14 * EDSCALE)) + "%)");
+
// AUTO BRACE COMPLETION
text_editor->set_auto_brace_completion(
EDITOR_DEF("text_editor/completion/auto_brace_complete", true));
@@ -1296,23 +1299,23 @@ CodeTextEditor::CodeTextEditor() {
warning_count_label->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
warning_count_label->set_text("0");
- Label *zoom_txt = memnew(Label);
- status_bar->add_child(zoom_txt);
- zoom_txt->set_align(Label::ALIGN_RIGHT);
- zoom_txt->set_valign(Label::VALIGN_CENTER);
- zoom_txt->set_v_size_flags(SIZE_FILL);
- zoom_txt->set_text(TTR("Zoom:"));
- zoom_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
-
- zoom_nb = memnew(Label);
- status_bar->add_child(zoom_nb);
- zoom_nb->set_valign(Label::VALIGN_CENTER);
- zoom_nb->set_v_size_flags(SIZE_FILL);
- zoom_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch
- zoom_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch
- zoom_nb->set_custom_minimum_size(Size2(60, 1) * EDSCALE);
- zoom_nb->set_align(Label::ALIGN_RIGHT);
- zoom_nb->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
+ Label *font_size_txt = memnew(Label);
+ status_bar->add_child(font_size_txt);
+ font_size_txt->set_align(Label::ALIGN_RIGHT);
+ font_size_txt->set_valign(Label::VALIGN_CENTER);
+ font_size_txt->set_v_size_flags(SIZE_FILL);
+ font_size_txt->set_text(TTR("Font Size:"));
+ font_size_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
+
+ font_size_nb = memnew(Label);
+ status_bar->add_child(font_size_nb);
+ font_size_nb->set_valign(Label::VALIGN_CENTER);
+ font_size_nb->set_v_size_flags(SIZE_FILL);
+ font_size_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch
+ font_size_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch
+ font_size_nb->set_custom_minimum_size(Size2(100, 1) * EDSCALE);
+ font_size_nb->set_align(Label::ALIGN_RIGHT);
+ font_size_nb->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
Label *line_txt = memnew(Label);
status_bar->add_child(line_txt);
@@ -1368,7 +1371,7 @@ CodeTextEditor::CodeTextEditor() {
font_resize_val = 0;
font_size = EditorSettings::get_singleton()->get("interface/editor/code_font_size");
- zoom_nb->set_text(itos(100 * font_size / (14 * EDSCALE)) + "%");
+ font_size_nb->set_text(itos(font_size) + " (" + itos(100 * font_size / (14 * EDSCALE)) + "%)");
font_resize_timer = memnew(Timer);
add_child(font_resize_timer);
font_resize_timer->set_one_shot(true);
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 311b6a959b..2d233c61c6 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -148,7 +148,7 @@ class CodeTextEditor : public VBoxContainer {
Label *line_nb;
Label *col_nb;
- Label *zoom_nb;
+ Label *font_size_nb;
Label *info;
Timer *idle;
Timer *code_complete_timer;
diff --git a/editor/collada/collada.h b/editor/collada/collada.h
index b777fa04c2..2d5819902c 100644
--- a/editor/collada/collada.h
+++ b/editor/collada/collada.h
@@ -110,14 +110,13 @@ public:
float z_near;
float z_far;
- CameraData() {
-
- mode = MODE_PERSPECTIVE;
- perspective.y_fov = 0;
+ CameraData() :
+ mode(MODE_PERSPECTIVE),
+ aspect(1),
+ z_near(0.1),
+ z_far(100) {
perspective.x_fov = 0;
- aspect = 1;
- z_near = 0.1;
- z_far = 100;
+ perspective.y_fov = 0;
}
};
@@ -141,16 +140,14 @@ public:
float spot_angle;
float spot_exp;
- LightData() {
-
- mode = MODE_AMBIENT;
- color = Color(1, 1, 1, 1);
- constant_att = 0;
- linear_att = 0;
- quad_att = 0;
-
- spot_angle = 45;
- spot_exp = 1;
+ LightData() :
+ mode(MODE_AMBIENT),
+ color(Color(1, 1, 1, 1)),
+ constant_att(0),
+ linear_att(0),
+ quad_att(0),
+ spot_angle(45),
+ spot_exp(1) {
}
};
@@ -580,11 +577,11 @@ public:
float animation_length;
- State() {
- unit_scale = 1.0;
- up_axis = Vector3::AXIS_Y;
- import_flags = 0;
- animation_length = 0;
+ State() :
+ import_flags(0),
+ unit_scale(1.0),
+ up_axis(Vector3::AXIS_Y),
+ animation_length(0) {
}
} state;
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index 926fa37040..9f1082ecc4 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -89,8 +89,9 @@ void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode) {
_save_and_update_favorite_list();
// Restore valid window bounds or pop up at default size.
- if (EditorSettings::get_singleton()->has_setting("interface/dialogs/create_new_node_bounds")) {
- popup(EditorSettings::get_singleton()->get("interface/dialogs/create_new_node_bounds"));
+ Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "create_new_node", Rect2());
+ if (saved_size != Rect2()) {
+ popup(saved_size);
} else {
Size2 popup_size = Size2(900, 700) * editor_get_scale();
@@ -415,7 +416,7 @@ void CreateDialog::_notification(int p_what) {
}
} break;
case NOTIFICATION_POPUP_HIDE: {
- EditorSettings::get_singleton()->set("interface/dialogs/create_new_node_bounds", get_rect());
+ EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "create_new_node", get_rect());
} break;
}
}
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index 99b6955160..aa9125915c 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -495,11 +495,19 @@ void DependencyRemoveDialog::ok_pressed() {
Resource *res = ResourceCache::get(files_to_delete[i]);
res->set_path("");
}
+
+ // If the file we are deleting is the main scene, clear its definition.
+ if (files_to_delete[i] == ProjectSettings::get_singleton()->get("application/run/main_scene")) {
+ ProjectSettings::get_singleton()->set("application/run/main_scene", "");
+ }
+
String path = OS::get_singleton()->get_resource_dir() + files_to_delete[i].replace_first("res://", "/");
print_verbose("Moving to trash: " + path);
Error err = OS::get_singleton()->move_to_trash(path);
if (err != OK) {
EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + files_to_delete[i] + "\n");
+ } else {
+ emit_signal("file_removed", files_to_delete[i]);
}
}
@@ -515,6 +523,8 @@ void DependencyRemoveDialog::ok_pressed() {
Error err = OS::get_singleton()->move_to_trash(path);
if (err != OK) {
EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + dirs_to_delete[i] + "\n");
+ } else {
+ emit_signal("folder_removed", dirs_to_delete[i]);
}
}
@@ -540,6 +550,11 @@ void DependencyRemoveDialog::ok_pressed() {
}
}
+void DependencyRemoveDialog::_bind_methods() {
+ ADD_SIGNAL(MethodInfo("file_removed", PropertyInfo(Variant::STRING, "file")));
+ ADD_SIGNAL(MethodInfo("folder_removed", PropertyInfo(Variant::STRING, "folder")));
+}
+
DependencyRemoveDialog::DependencyRemoveDialog() {
VBoxContainer *vb = memnew(VBoxContainer);
diff --git a/editor/dependency_editor.h b/editor/dependency_editor.h
index e46df4c837..5f1074764b 100644
--- a/editor/dependency_editor.h
+++ b/editor/dependency_editor.h
@@ -126,6 +126,8 @@ class DependencyRemoveDialog : public ConfirmationDialog {
void ok_pressed();
+ static void _bind_methods();
+
public:
void show(const Vector<String> &p_folders, const Vector<String> &p_files);
DependencyRemoveDialog();
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 6cd81626c7..b1f5bc4908 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -36,11 +36,35 @@
#include "filesystem_dock.h"
#include "servers/audio_server.h"
+void EditorAudioBus::_update_visible_channels() {
+
+ int i = 0;
+ for (; i < cc; i++) {
+
+ if (!channel[i].vu_l->is_visible()) {
+ channel[i].vu_l->show();
+ }
+ if (!channel[i].vu_r->is_visible()) {
+ channel[i].vu_r->show();
+ }
+ }
+
+ for (; i < CHANNELS_MAX; i++) {
+
+ if (channel[i].vu_l->is_visible()) {
+ channel[i].vu_l->hide();
+ }
+ if (channel[i].vu_r->is_visible()) {
+ channel[i].vu_r->hide();
+ }
+ }
+}
+
void EditorAudioBus::_notification(int p_what) {
if (p_what == NOTIFICATION_READY) {
- for (int i = 0; i < cc; i++) {
+ for (int i = 0; i < CHANNELS_MAX; i++) {
channel[i].vu_l->set_under_texture(get_icon("BusVuEmpty", "EditorIcons"));
channel[i].vu_l->set_progress_texture(get_icon("BusVuFull", "EditorIcons"));
channel[i].vu_r->set_under_texture(get_icon("BusVuEmpty", "EditorIcons"));
@@ -72,6 +96,11 @@ void EditorAudioBus::_notification(int p_what) {
if (p_what == NOTIFICATION_PROCESS) {
+ if (cc != AudioServer::get_singleton()->get_bus_channels(get_index())) {
+ cc = AudioServer::get_singleton()->get_bus_channels(get_index());
+ _update_visible_channels();
+ }
+
for (int i = 0; i < cc; i++) {
float real_peak[2] = { -100, -100 };
bool activity_found = false;
@@ -113,7 +142,7 @@ void EditorAudioBus::_notification(int p_what) {
if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < CHANNELS_MAX; i++) {
channel[i].peak_l = -100;
channel[i].peak_r = -100;
channel[i].prev_active = true;
@@ -124,7 +153,7 @@ void EditorAudioBus::_notification(int p_what) {
if (p_what == NOTIFICATION_THEME_CHANGED) {
- for (int i = 0; i < cc; i++) {
+ for (int i = 0; i < CHANNELS_MAX; i++) {
channel[i].vu_l->set_under_texture(get_icon("BusVuEmpty", "EditorIcons"));
channel[i].vu_l->set_progress_texture(get_icon("BusVuFull", "EditorIcons"));
channel[i].vu_r->set_under_texture(get_icon("BusVuEmpty", "EditorIcons"));
@@ -709,9 +738,8 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
slider->connect("value_changed", this, "_volume_db_changed");
hb->add_child(slider);
- cc = AudioServer::get_singleton()->get_channel_count();
-
- for (int i = 0; i < cc; i++) {
+ cc = 0;
+ for (int i = 0; i < CHANNELS_MAX; i++) {
channel[i].vu_l = memnew(TextureProgress);
channel[i].vu_l->set_fill_mode(TextureProgress::FILL_BOTTOM_TO_TOP);
hb->add_child(channel[i].vu_l);
diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h
index 4cdcb65d7b..02038fbe18 100644
--- a/editor/editor_audio_buses.h
+++ b/editor/editor_audio_buses.h
@@ -59,6 +59,7 @@ class EditorAudioBus : public PanelContainer {
VSlider *slider;
int cc;
+ static const int CHANNELS_MAX = 4;
struct {
bool prev_active;
@@ -68,7 +69,7 @@ class EditorAudioBus : public PanelContainer {
TextureProgress *vu_l;
TextureProgress *vu_r;
- } channel[4];
+ } channel[CHANNELS_MAX];
TextureRect *scale;
OptionButton *send;
@@ -102,6 +103,7 @@ class EditorAudioBus : public PanelContainer {
void _effect_selected();
void _delete_effect_pressed(int p_option);
void _effect_rmb(const Vector2 &p_pos);
+ void _update_visible_channels();
virtual Variant get_drag_data(const Point2 &p_point);
virtual bool can_drop_data(const Point2 &p_point, const Variant &p_data) const;
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index 209a006a06..71315f1377 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -222,11 +222,10 @@ String EditorExportPreset::get_custom_features() const {
return custom_features;
}
-EditorExportPreset::EditorExportPreset() {
-
- export_path = "";
- export_filter = EXPORT_ALL_RESOURCES;
- runnable = false;
+EditorExportPreset::EditorExportPreset() :
+ export_filter(EXPORT_ALL_RESOURCES),
+ export_path(""),
+ runnable(false) {
}
///////////////////////////////////
@@ -546,6 +545,13 @@ void EditorExportPlugin::_export_begin_script(const PoolVector<String> &p_featur
}
}
+void EditorExportPlugin::_export_end_script() {
+
+ if (get_script_instance()) {
+ get_script_instance()->call("_export_end");
+ }
+}
+
void EditorExportPlugin::_export_file(const String &p_path, const String &p_type, const Set<String> &p_features) {
}
@@ -587,6 +593,20 @@ EditorExportPlatform::FeatureContainers EditorExportPlatform::get_feature_contai
result.features.insert(E->get());
result.features_pv.push_back(E->get());
}
+
+ if (p_preset->get_custom_features() != String()) {
+
+ Vector<String> tmp_custom_list = p_preset->get_custom_features().split(",");
+
+ for (int i = 0; i < tmp_custom_list.size(); i++) {
+ String f = tmp_custom_list[i].strip_edges();
+ if (f != String()) {
+ result.features.insert(f);
+ result.features_pv.push_back(f);
+ }
+ }
+ }
+
return result;
}
@@ -606,6 +626,9 @@ EditorExportPlatform::ExportNotifier::ExportNotifier(EditorExportPlatform &p_pla
EditorExportPlatform::ExportNotifier::~ExportNotifier() {
Vector<Ref<EditorExportPlugin> > export_plugins = EditorExport::get_singleton()->get_export_plugins();
for (int i = 0; i < export_plugins.size(); i++) {
+ if (export_plugins[i]->get_script_instance()) {
+ export_plugins.write[i]->_export_end_script();
+ }
export_plugins.write[i]->_export_end();
}
}
diff --git a/editor/editor_export.h b/editor/editor_export.h
index 380b33cd17..881e86fb12 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -206,9 +206,9 @@ public:
PropertyInfo option;
Variant default_value;
- ExportOption(const PropertyInfo &p_info, const Variant &p_default) {
- option = p_info;
- default_value = p_default;
+ ExportOption(const PropertyInfo &p_info, const Variant &p_default) :
+ option(p_info),
+ default_value(p_default) {
}
ExportOption() {}
};
@@ -291,6 +291,7 @@ class EditorExportPlugin : public Reference {
void _export_file_script(const String &p_path, const String &p_type, const PoolVector<String> &p_features);
void _export_begin_script(const PoolVector<String> &p_features, bool p_debug, const String &p_path, int p_flags);
+ void _export_end_script();
protected:
void add_file(const String &p_path, const Vector<uint8_t> &p_file, bool p_remap);
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index b39f910182..2360e5f410 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -830,11 +830,12 @@ void EditorFileDialog::update_file_list() {
d["name"] = files.front()->get();
d["dir"] = false;
String fullpath = cdir.plus_file(files.front()->get());
+ d["path"] = fullpath;
+ item_list->set_item_metadata(item_list->get_item_count() - 1, d);
+
if (display_mode == DISPLAY_THUMBNAILS) {
EditorResourcePreview::get_singleton()->queue_resource_preview(fullpath, this, "_thumbnail_result", fullpath);
}
- d["path"] = fullpath;
- item_list->set_item_metadata(item_list->get_item_count() - 1, d);
if (file->get_text() == files.front()->get())
item_list->set_current(item_list->get_item_count() - 1);
@@ -1698,6 +1699,12 @@ EditorFileDialog::~EditorFileDialog() {
memdelete(dir_access);
}
+void EditorLineEditFileChooser::_notification(int p_what) {
+
+ if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED)
+ button->set_icon(get_icon("Folder", "EditorIcons"));
+}
+
void EditorLineEditFileChooser::_bind_methods() {
ClassDB::bind_method(D_METHOD("_browse"), &EditorLineEditFileChooser::_browse);
@@ -1724,7 +1731,6 @@ EditorLineEditFileChooser::EditorLineEditFileChooser() {
add_child(line_edit);
line_edit->set_h_size_flags(SIZE_EXPAND_FILL);
button = memnew(Button);
- button->set_text(" .. ");
add_child(button);
button->connect("pressed", this, "_browse");
dialog = memnew(EditorFileDialog);
diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h
index 56cefb9a47..574fefcab4 100644
--- a/editor/editor_file_dialog.h
+++ b/editor/editor_file_dialog.h
@@ -254,6 +254,7 @@ class EditorLineEditFileChooser : public HBoxContainer {
void _browse();
protected:
+ void _notification(int p_what);
static void _bind_methods();
public:
diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp
index 776342582c..a88cd740db 100644
--- a/editor/editor_folding.cpp
+++ b/editor/editor_folding.cpp
@@ -1,8 +1,8 @@
#include "editor_folding.h"
#include "core/os/file_access.h"
-#include "editor_settings.h"
#include "editor_inspector.h"
+#include "editor_settings.h"
PoolVector<String> EditorFolding::_get_unfolds(const Object *p_object) {
@@ -172,7 +172,6 @@ bool EditorFolding::has_folding_data(const String &p_path) {
return FileAccess::exists(file);
}
-
void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) {
List<PropertyInfo> plist;
@@ -185,34 +184,33 @@ void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) {
for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
if (E->get().usage & PROPERTY_USAGE_CATEGORY) {
- group="";
- group_base="";
+ group = "";
+ group_base = "";
}
if (E->get().usage & PROPERTY_USAGE_GROUP) {
group = E->get().name;
group_base = E->get().hint_string;
if (group_base.ends_with("_")) {
- group_base=group_base.substr(0,group_base.length()-1);
+ group_base = group_base.substr(0, group_base.length() - 1);
}
}
//can unfold
if (E->get().usage & PROPERTY_USAGE_EDITOR) {
-
if (group != "") { //group
- if (group_base==String() || E->get().name.begins_with(group_base)) {
- bool can_revert = EditorPropertyRevert::can_property_revert(p_object,E->get().name);
- if (can_revert) {
+ if (group_base == String() || E->get().name.begins_with(group_base)) {
+ bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E->get().name);
+ if (can_revert) {
unfold_group.insert(group);
}
}
} else { //path
int last = E->get().name.find_last("/");
- if (last!=-1) {
- bool can_revert = EditorPropertyRevert::can_property_revert(p_object,E->get().name);
+ if (last != -1) {
+ bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E->get().name);
if (can_revert) {
- unfold_group.insert(E->get().name.substr(0,last));
+ unfold_group.insert(E->get().name.substr(0, last));
}
}
}
@@ -223,13 +221,13 @@ void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) {
if (res.is_valid() && !resources.has(res) && res->get_path() != String() && !res->get_path().is_resource_file()) {
resources.insert(res);
- _do_object_unfolds(res.ptr(),resources);
+ _do_object_unfolds(res.ptr(), resources);
}
}
}
- for (Set<String>::Element *E=unfold_group.front();E;E=E->next()) {
- p_object->editor_set_section_unfold(E->get(),true);
+ for (Set<String>::Element *E = unfold_group.front(); E; E = E->next()) {
+ p_object->editor_set_section_unfold(E->get(), true);
}
}
@@ -243,7 +241,7 @@ void EditorFolding::_do_node_unfolds(Node *p_root, Node *p_node, Set<RES> &resou
}
}
- _do_object_unfolds(p_node,resources);
+ _do_object_unfolds(p_node, resources);
for (int i = 0; i < p_node->get_child_count(); i++) {
_do_node_unfolds(p_root, p_node->get_child(i), resources);
@@ -253,7 +251,7 @@ void EditorFolding::_do_node_unfolds(Node *p_root, Node *p_node, Set<RES> &resou
void EditorFolding::unfold_scene(Node *p_scene) {
Set<RES> resources;
- _do_node_unfolds(p_scene,p_scene,resources);
+ _do_node_unfolds(p_scene, p_scene, resources);
}
EditorFolding::EditorFolding() {
diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp
index 8676dac921..a9f7be0fff 100644
--- a/editor/editor_help_search.cpp
+++ b/editor/editor_help_search.cpp
@@ -130,9 +130,9 @@ void EditorHelpSearch::_notification(int p_what) {
} break;
case NOTIFICATION_POPUP_HIDE: {
- results_tree->clear();
+ results_tree->call_deferred("clear"); // Wait for the Tree's mouse event propagation.
get_ok()->set_disabled(true);
- EditorSettings::get_singleton()->set("interface/dialogs/search_help_bounds", get_rect());
+ EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "search_help", get_rect());
} break;
case NOTIFICATION_PROCESS: {
@@ -177,8 +177,9 @@ void EditorHelpSearch::popup_dialog() {
void EditorHelpSearch::popup_dialog(const String &p_term) {
// Restore valid window bounds or pop up at default size.
- if (EditorSettings::get_singleton()->has_setting("interface/dialogs/search_help_bounds"))
- popup(EditorSettings::get_singleton()->get("interface/dialogs/search_help_bounds"));
+ Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "search_help", Rect2());
+ if (saved_size != Rect2())
+ popup(saved_size);
else
popup_centered_ratio(0.5F);
@@ -578,18 +579,12 @@ bool EditorHelpSearch::Runner::work(uint64_t slot) {
return true;
}
-EditorHelpSearch::Runner::Runner(Control *p_icon_service, Tree *p_results_tree, const String &p_term, int p_search_flags) {
-
- ui_service = p_icon_service;
- results_tree = p_results_tree;
- term = p_term.strip_edges();
- search_flags = p_search_flags;
-
- if ((search_flags & SEARCH_CASE_SENSITIVE) == 0)
- term = term.to_lower();
-
- empty_icon = ui_service->get_icon("ArrowRight", "EditorIcons");
- disabled_color = ui_service->get_color("disabled_font_color", "Editor");
-
- phase = 0;
+EditorHelpSearch::Runner::Runner(Control *p_icon_service, Tree *p_results_tree, const String &p_term, int p_search_flags) :
+ phase(0),
+ ui_service(p_icon_service),
+ results_tree(p_results_tree),
+ term((p_search_flags & SEARCH_CASE_SENSITIVE) == 0 ? p_term.strip_edges().to_lower() : p_term.strip_edges()),
+ search_flags(p_search_flags),
+ empty_icon(ui_service->get_icon("ArrowRight", "EditorIcons")),
+ disabled_color(ui_service->get_color("disabled_font_color", "Editor")) {
}
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index b50af93352..10c9974cdd 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -128,18 +128,22 @@ void EditorProperty::_notification(int p_what) {
bottom_rect = Rect2(m, rect.size.height + get_constant("vseparation", "Tree"), size.width - m, bottom_editor->get_combined_minimum_size().height);
}
- }
- if (keying) {
- Ref<Texture> key;
+ if (keying) {
+ Ref<Texture> key;
- if (use_keying_next()) {
- key = get_icon("KeyNext", "EditorIcons");
- } else {
- key = get_icon("Key", "EditorIcons");
- }
+ if (use_keying_next()) {
+ key = get_icon("KeyNext", "EditorIcons");
+ } else {
+ key = get_icon("Key", "EditorIcons");
+ }
- rect.size.x -= key->get_width() + get_constant("hseparator", "Tree");
+ rect.size.x -= key->get_width() + get_constant("hseparator", "Tree");
+
+ if (no_children) {
+ text_size -= key->get_width() + 4 * EDSCALE;
+ }
+ }
}
//set children
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 8f9c91c008..d100d7f618 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -999,6 +999,22 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
EditorResourcePreview::get_singleton()->check_for_invalidation(p_file);
}
+bool EditorNode::_validate_scene_recursive(const String &p_filename, Node *p_node) {
+
+ for (int i = 0; i < p_node->get_child_count(); i++) {
+ Node *child = p_node->get_child(i);
+ if (child->get_filename() == p_filename) {
+ return true;
+ }
+
+ if (_validate_scene_recursive(p_filename, child)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
void EditorNode::_save_scene(String p_file, int idx) {
Node *scene = editor_data.get_edited_scene_root(idx);
@@ -1009,6 +1025,11 @@ void EditorNode::_save_scene(String p_file, int idx) {
return;
}
+ if (scene->get_filename() != String() && _validate_scene_recursive(scene->get_filename(), scene)) {
+ show_accept(TTR("This scene can't be saved because there is a cyclic instancing inclusion.\nPlease resolve it and then attempt to save again."), TTR("OK"));
+ return;
+ }
+
editor_data.apply_changes_in_editors();
_save_default_environment();
@@ -1452,7 +1473,7 @@ void EditorNode::_edit_current() {
bool is_node = current_obj->is_class("Node");
String editable_warning; //none by default
-
+
if (is_resource) {
Resource *current_res = Object::cast_to<Resource>(current_obj);
@@ -3228,17 +3249,31 @@ Ref<Texture> EditorNode::get_class_icon(const String &p_class, const String &p_f
void EditorNode::progress_add_task(const String &p_task, const String &p_label, int p_steps, bool p_can_cancel) {
- singleton->progress_dialog->add_task(p_task, p_label, p_steps, p_can_cancel);
+ if (singleton->disable_progress_dialog) {
+ print_line(p_task + ": begin: " + p_label + " steps: " + itos(p_steps));
+ } else {
+ singleton->progress_dialog->add_task(p_task, p_label, p_steps, p_can_cancel);
+ }
}
bool EditorNode::progress_task_step(const String &p_task, const String &p_state, int p_step, bool p_force_refresh) {
- return singleton->progress_dialog->task_step(p_task, p_state, p_step, p_force_refresh);
+ if (singleton->disable_progress_dialog) {
+ print_line("\t" + p_task + ": step " + itos(p_step) + ": " + p_state);
+ return false;
+ } else {
+
+ return singleton->progress_dialog->task_step(p_task, p_state, p_step, p_force_refresh);
+ }
}
void EditorNode::progress_end_task(const String &p_task) {
- singleton->progress_dialog->end_task(p_task);
+ if (singleton->disable_progress_dialog) {
+ print_line(p_task + ": end");
+ } else {
+ singleton->progress_dialog->end_task(p_task);
+ }
}
void EditorNode::progress_add_task_bg(const String &p_task, const String &p_label, int p_steps) {
@@ -3320,7 +3355,7 @@ Error EditorNode::export_preset(const String &p_preset, const String &p_path, bo
export_defer.path = p_path;
export_defer.debug = p_debug;
export_defer.password = p_password;
-
+ disable_progress_dialog = true;
return OK;
}
@@ -3610,6 +3645,7 @@ void EditorNode::_load_docks() {
_load_docks_from_config(config, "docks");
_load_open_scenes_from_config(config, "EditorNode");
+
editor_data.set_plugin_window_layout(config);
}
@@ -3804,6 +3840,23 @@ void EditorNode::_load_open_scenes_from_config(Ref<ConfigFile> p_layout, const S
restoring_scenes = false;
}
+bool EditorNode::has_scenes_in_session() {
+ if (!bool(EDITOR_GET("interface/scene_tabs/restore_scenes_on_load"))) {
+ return false;
+ }
+ Ref<ConfigFile> config;
+ config.instance();
+ Error err = config->load(EditorSettings::get_singleton()->get_project_settings_dir().plus_file("editor_layout.cfg"));
+ if (err != OK) {
+ return false;
+ }
+ if (!config->has_section("EditorNode") || !config->has_section_key("EditorNode", "open_scenes")) {
+ return false;
+ }
+ Array scenes = config->get_value("EditorNode", "open_scenes");
+ return !scenes.empty();
+}
+
void EditorNode::_update_layouts_menu() {
editor_layouts->clear();
@@ -4710,7 +4763,7 @@ EditorNode::EditorNode() {
_initializing_addons = false;
docks_visible = true;
restoring_scenes = false;
-
+ disable_progress_dialog = false;
scene_distraction = false;
script_distraction = false;
@@ -5134,14 +5187,9 @@ EditorNode::EditorNode() {
top_region->add_child(left_menu_hb);
menu_hb->add_child(top_region);
- {
- Control *sp = memnew(Control);
- sp->set_custom_minimum_size(Size2(30, 0) * EDSCALE);
- menu_hb->add_child(sp);
- }
-
file_menu = memnew(MenuButton);
file_menu->set_flat(false);
+ file_menu->set_switch_on_hover(true);
file_menu->set_text(TTR("Scene"));
file_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
left_menu_hb->add_child(file_menu);
@@ -5233,6 +5281,7 @@ EditorNode::EditorNode() {
project_menu = memnew(MenuButton);
project_menu->set_flat(false);
+ project_menu->set_switch_on_hover(true);
project_menu->set_tooltip(TTR("Miscellaneous project or scene-wide tools."));
project_menu->set_text(TTR("Project"));
project_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
@@ -5274,6 +5323,7 @@ EditorNode::EditorNode() {
debug_menu = memnew(MenuButton);
debug_menu->set_flat(false);
+ debug_menu->set_switch_on_hover(true);
debug_menu->set_text(TTR("Debug"));
debug_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
left_menu_hb->add_child(debug_menu);
@@ -5304,6 +5354,7 @@ EditorNode::EditorNode() {
settings_menu = memnew(MenuButton);
settings_menu->set_flat(false);
+ settings_menu->set_switch_on_hover(true);
settings_menu->set_text(TTR("Editor"));
settings_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
left_menu_hb->add_child(settings_menu);
@@ -5340,6 +5391,7 @@ EditorNode::EditorNode() {
// Help Menu
help_menu = memnew(MenuButton);
help_menu->set_flat(false);
+ help_menu->set_switch_on_hover(true);
help_menu->set_text(TTR("Help"));
help_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
left_menu_hb->add_child(help_menu);
@@ -5356,12 +5408,8 @@ EditorNode::EditorNode() {
p->add_separator();
p->add_icon_item(gui_base->get_icon("Godot", "EditorIcons"), TTR("About"), HELP_ABOUT);
- play_cc = memnew(CenterContainer);
- play_cc->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);
- menu_hb->add_child(play_cc);
-
play_button_panel = memnew(PanelContainer);
- play_cc->add_child(play_button_panel);
+ menu_hb->add_child(play_button_panel);
HBoxContainer *play_hb = memnew(HBoxContainer);
play_button_panel->add_child(play_hb);
@@ -5407,11 +5455,6 @@ EditorNode::EditorNode() {
run_native = memnew(EditorRunNative);
play_hb->add_child(run_native);
- native_play_button = memnew(MenuButton);
- native_play_button->set_text("NTV");
- menu_hb->add_child(native_play_button);
- native_play_button->hide();
- native_play_button->get_popup()->connect("id_pressed", this, "_run_in_device");
run_native->connect("native_run", this, "_menu_option", varray(RUN_PLAY_NATIVE));
play_scene_button = memnew(ToolButton);
@@ -5440,6 +5483,9 @@ EditorNode::EditorNode() {
play_custom_scene_button->set_shortcut(ED_SHORTCUT("editor/play_custom_scene", TTR("Play Custom Scene"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_F5));
#endif
+ HBoxContainer *right_menu_hb = memnew(HBoxContainer);
+ menu_hb->add_child(right_menu_hb);
+
// Toggle for video driver
video_driver = memnew(OptionButton);
video_driver->set_flat(true);
@@ -5447,7 +5493,7 @@ EditorNode::EditorNode() {
video_driver->set_v_size_flags(Control::SIZE_SHRINK_CENTER);
video_driver->connect("item_selected", this, "_video_driver_selected");
video_driver->add_font_override("font", gui_base->get_font("bold", "EditorFonts"));
- menu_hb->add_child(video_driver);
+ right_menu_hb->add_child(video_driver);
String video_drivers = ProjectSettings::get_singleton()->get_custom_property_info()["rendering/quality/driver/driver_name"].hint_string;
String current_video_driver = OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
@@ -5473,9 +5519,6 @@ EditorNode::EditorNode() {
progress_hb = memnew(BackgroundProgress);
- HBoxContainer *right_menu_hb = memnew(HBoxContainer);
- menu_hb->add_child(right_menu_hb);
-
layout_dialog = memnew(EditorNameDialog);
gui_base->add_child(layout_dialog);
layout_dialog->set_hide_on_ok(false);
diff --git a/editor/editor_node.h b/editor/editor_node.h
index e220daf8a9..e5670e5e7c 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -243,7 +243,6 @@ private:
Control *vp_base;
PaneDrag *pd;
- CenterContainer *play_cc;
HBoxContainer *menu_hb;
Control *viewport;
MenuButton *file_menu;
@@ -255,7 +254,6 @@ private:
ToolButton *export_button;
ToolButton *prev_scene;
ToolButton *play_button;
- MenuButton *native_play_button;
ToolButton *pause_button;
ToolButton *stop_button;
ToolButton *run_settings_button;
@@ -445,6 +443,7 @@ private:
void _show_messages();
void _vp_resized();
+ bool _validate_scene_recursive(const String &p_filename, Node *p_node);
void _save_scene(String p_file, int idx = -1);
void _save_all_scenes();
int _next_unsaved_scene(bool p_valid_filename, int p_start = 0);
@@ -524,6 +523,8 @@ private:
} export_defer;
+ bool disable_progress_dialog;
+
static EditorNode *singleton;
static Vector<EditorNodeInitCallback> _init_callbacks;
@@ -786,6 +787,7 @@ public:
void edit_current() { _edit_current(); };
void update_keying() const { inspector_dock->update_keying(); };
+ bool has_scenes_in_session();
EditorNode();
~EditorNode();
diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp
index 86b2db877e..cd024ff870 100644
--- a/editor/editor_plugin.cpp
+++ b/editor/editor_plugin.cpp
@@ -829,11 +829,11 @@ void EditorPlugin::_bind_methods() {
BIND_ENUM_CONSTANT(DOCK_SLOT_MAX);
}
-EditorPlugin::EditorPlugin() {
- undo_redo = NULL;
- input_event_forwarding_always_enabled = false;
- force_draw_over_forwarding_enabled = false;
- last_main_screen_name = "";
+EditorPlugin::EditorPlugin() :
+ undo_redo(NULL),
+ input_event_forwarding_always_enabled(false),
+ force_draw_over_forwarding_enabled(false),
+ last_main_screen_name("") {
}
EditorPlugin::~EditorPlugin() {
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 57c6fa3547..b992b90758 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -233,7 +233,7 @@ void EditorPropertyPath::_path_pressed() {
dialog->set_mode(EditorFileDialog::MODE_OPEN_DIR);
dialog->set_current_dir(full_path);
} else {
- dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE);
+ dialog->set_mode(save_mode ? EditorFileDialog::MODE_SAVE_FILE : EditorFileDialog::MODE_OPEN_FILE);
for (int i = 0; i < extensions.size(); i++) {
String e = extensions[i].strip_edges();
if (e != String()) {
@@ -260,6 +260,11 @@ void EditorPropertyPath::setup(const Vector<String> &p_extensions, bool p_folder
global = p_global;
}
+void EditorPropertyPath::set_save_mode() {
+
+ save_mode = true;
+}
+
void EditorPropertyPath::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) {
@@ -296,6 +301,7 @@ EditorPropertyPath::EditorPropertyPath() {
path_edit->connect("pressed", this, "_path_pressed");
folder = false;
global = false;
+ save_mode = false;
}
///////////////////// CLASS NAME /////////////////////////
@@ -1090,6 +1096,8 @@ void EditorPropertyVector2::setup(double p_min, double p_max, double p_step, boo
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1171,6 +1179,8 @@ void EditorPropertyRect2::setup(double p_min, double p_max, double p_step, bool
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1251,6 +1261,8 @@ void EditorPropertyVector3::setup(double p_min, double p_max, double p_step, boo
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1331,6 +1343,8 @@ void EditorPropertyPlane::setup(double p_min, double p_max, double p_step, bool
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1413,6 +1427,8 @@ void EditorPropertyQuat::setup(double p_min, double p_max, double p_step, bool p
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1500,6 +1516,8 @@ void EditorPropertyAABB::setup(double p_min, double p_max, double p_step, bool p
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1574,6 +1592,8 @@ void EditorPropertyTransform2D::setup(double p_min, double p_max, double p_step,
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1653,6 +1673,8 @@ void EditorPropertyBasis::setup(double p_min, double p_max, double p_step, bool
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1738,6 +1760,8 @@ void EditorPropertyTransform::setup(double p_min, double p_max, double p_step, b
spin[i]->set_max(p_max);
spin[i]->set_step(p_step);
spin[i]->set_hide_slider(p_no_slider);
+ spin[i]->set_allow_greater(true);
+ spin[i]->set_allow_lesser(true);
}
}
@@ -1932,6 +1956,20 @@ EditorPropertyNodePath::EditorPropertyNodePath() {
void EditorPropertyResource::_file_selected(const String &p_path) {
RES res = ResourceLoader::load(p_path);
+
+ List<PropertyInfo> prop_list;
+ get_edited_object()->get_property_list(&prop_list);
+ String type;
+
+ for (List<PropertyInfo>::Element *E = prop_list.front(); E; E = E->next()) {
+ if (E->get().name == get_edited_property() && (E->get().hint & PROPERTY_HINT_RESOURCE_TYPE)) {
+ type = E->get().hint_string;
+ }
+ }
+
+ if (!type.empty() && !res->is_class(type))
+ EditorNode::get_singleton()->show_warning(vformat(TTR("The selected resource (%s) does not match the type expected for this property (%s)."), res->get_class(), type));
+
emit_signal("property_changed", get_edited_property(), res);
update_property();
}
@@ -2383,6 +2421,7 @@ void EditorPropertyResource::update_property() {
sub_inspector->set_keying(is_keying());
sub_inspector->set_read_only(is_read_only());
sub_inspector->set_use_folding(is_using_folding());
+ sub_inspector->set_undo_redo(EditorNode::get_singleton()->get_undo_redo());
sub_inspector_vbox = memnew(VBoxContainer);
add_child(sub_inspector_vbox);
@@ -3096,7 +3135,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
} break;
case Variant::ARRAY: {
EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::ARRAY);
+ editor->setup(Variant::ARRAY, p_hint_text);
add_property_editor(p_path, editor);
} break;
case Variant::POOL_BYTE_ARRAY: {
diff --git a/editor/editor_properties.h b/editor/editor_properties.h
index b82ef977ef..05716408f3 100644
--- a/editor/editor_properties.h
+++ b/editor/editor_properties.h
@@ -106,6 +106,7 @@ class EditorPropertyPath : public EditorProperty {
Vector<String> extensions;
bool folder;
bool global;
+ bool save_mode;
EditorFileDialog *dialog;
LineEdit *path;
Button *path_edit;
@@ -120,6 +121,7 @@ protected:
public:
void setup(const Vector<String> &p_extensions, bool p_folder, bool p_global);
+ void set_save_mode();
virtual void update_property();
EditorPropertyPath();
};
diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp
index 431f608f46..090c7b2d3d 100644
--- a/editor/editor_properties_array_dict.cpp
+++ b/editor/editor_properties_array_dict.cpp
@@ -223,31 +223,31 @@ void EditorPropertyArray::update_property() {
// arrays
case Variant::POOL_BYTE_ARRAY: {
- arrtype = "ByteArray";
+ arrtype = "PoolByteArray";
} break;
case Variant::POOL_INT_ARRAY: {
- arrtype = "IntArray";
+ arrtype = "PoolIntArray";
} break;
case Variant::POOL_REAL_ARRAY: {
- arrtype = "FltArray";
+ arrtype = "PoolFloatArray";
} break;
case Variant::POOL_STRING_ARRAY: {
- arrtype = "StrArray";
+ arrtype = "PoolStringArray";
} break;
case Variant::POOL_VECTOR2_ARRAY: {
- arrtype = "Vec2Array";
+ arrtype = "PoolVector2Array";
} break;
case Variant::POOL_VECTOR3_ARRAY: {
- arrtype = "Vec3Array";
+ arrtype = "PoolVector3Array";
} break;
case Variant::POOL_COLOR_ARRAY: {
- arrtype = "ColArray";
+ arrtype = "PoolColorArray";
} break;
default: {}
}
@@ -261,7 +261,7 @@ void EditorPropertyArray::update_property() {
return;
}
- edit->set_text(arrtype + "(size " + itos(array.call("size")) + ")");
+ edit->set_text(arrtype + " (size " + itos(array.call("size")) + ")");
#ifdef TOOLS_ENABLED
@@ -334,185 +334,18 @@ void EditorPropertyArray::update_property() {
EditorProperty *prop = NULL;
Variant value = array.get(i + offset);
+ Variant::Type value_type = value.get_type();
- switch (value.get_type()) {
- case Variant::NIL: {
- prop = memnew(EditorPropertyNil);
-
- } break;
-
- // atomic types
- case Variant::BOOL: {
-
- prop = memnew(EditorPropertyCheck);
-
- } break;
- case Variant::INT: {
- EditorPropertyInteger *editor = memnew(EditorPropertyInteger);
- editor->setup(-100000, 100000, 1, true, true);
- prop = editor;
-
- } break;
- case Variant::REAL: {
-
- EditorPropertyFloat *editor = memnew(EditorPropertyFloat);
- editor->setup(-100000, 100000, 0.001, true, false, true, true);
- prop = editor;
- } break;
- case Variant::STRING: {
-
- prop = memnew(EditorPropertyText);
-
- } break;
-
- // math types
-
- case Variant::VECTOR2: {
-
- EditorPropertyVector2 *editor = memnew(EditorPropertyVector2);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::RECT2: {
-
- EditorPropertyRect2 *editor = memnew(EditorPropertyRect2);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::VECTOR3: {
-
- EditorPropertyVector3 *editor = memnew(EditorPropertyVector3);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::TRANSFORM2D: {
-
- EditorPropertyTransform2D *editor = memnew(EditorPropertyTransform2D);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::PLANE: {
-
- EditorPropertyPlane *editor = memnew(EditorPropertyPlane);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::QUAT: {
-
- EditorPropertyQuat *editor = memnew(EditorPropertyQuat);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::AABB: {
-
- EditorPropertyAABB *editor = memnew(EditorPropertyAABB);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::BASIS: {
- EditorPropertyBasis *editor = memnew(EditorPropertyBasis);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
- case Variant::TRANSFORM: {
- EditorPropertyTransform *editor = memnew(EditorPropertyTransform);
- editor->setup(-100000, 100000, 0.001, true);
- prop = editor;
-
- } break;
-
- // misc types
- case Variant::COLOR: {
- prop = memnew(EditorPropertyColor);
-
- } break;
- case Variant::NODE_PATH: {
- prop = memnew(EditorPropertyNodePath);
-
- } break;
- case Variant::_RID: {
- prop = memnew(EditorPropertyNil);
-
- } break;
- case Variant::OBJECT: {
-
- if (Object::cast_to<EncodedObjectAsID>(value)) {
-
- EditorPropertyObjectID *editor = memnew(EditorPropertyObjectID);
- editor->setup("Object");
- prop = editor;
-
- } else {
-
- EditorPropertyResource *editor = memnew(EditorPropertyResource);
- editor->setup("Resource");
- prop = editor;
- }
-
- } break;
- case Variant::DICTIONARY: {
- prop = memnew(EditorPropertyDictionary);
-
- } break;
-
- // arrays
- case Variant::ARRAY: {
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::ARRAY);
- prop = editor;
-
- } break;
- case Variant::POOL_BYTE_ARRAY: {
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_BYTE_ARRAY);
- prop = editor;
-
- } break;
- case Variant::POOL_INT_ARRAY: {
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_INT_ARRAY);
- prop = editor;
-
- } break;
- case Variant::POOL_REAL_ARRAY: {
-
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_REAL_ARRAY);
- prop = editor;
- } break;
- case Variant::POOL_STRING_ARRAY: {
-
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_STRING_ARRAY);
- prop = editor;
- } break;
- case Variant::POOL_VECTOR2_ARRAY: {
-
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_VECTOR2_ARRAY);
- prop = editor;
- } break;
- case Variant::POOL_VECTOR3_ARRAY: {
-
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_VECTOR3_ARRAY);
- prop = editor;
- } break;
- case Variant::POOL_COLOR_ARRAY: {
+ if (value_type == Variant::NIL && subtype != Variant::NIL) {
+ value_type = subtype;
+ }
- EditorPropertyArray *editor = memnew(EditorPropertyArray);
- editor->setup(Variant::POOL_COLOR_ARRAY);
- prop = editor;
- } break;
- default: {}
+ if (value_type == Variant::OBJECT && Object::cast_to<EncodedObjectAsID>(value)) {
+ EditorPropertyObjectID *editor = memnew(EditorPropertyObjectID);
+ editor->setup("Object");
+ prop = editor;
+ } else {
+ prop = EditorInspector::instantiate_property_editor(NULL, value_type, "", subtype_hint, subtype_hint_string, 0);
}
prop->set_object_and_property(object.ptr(), prop_name);
@@ -583,15 +416,39 @@ void EditorPropertyArray::_length_changed(double p_page) {
emit_signal("property_changed", get_edited_property(), array);
if (array.get_type() == Variant::ARRAY) {
+ if (subtype != Variant::NIL) {
+ int size = array.call("size");
+ for (int i = 0; i < size; i++) {
+ if (array.get(i).get_type() == Variant::NIL) {
+ Variant::CallError ce;
+ array.set(i, Variant::construct(subtype, NULL, 0, ce));
+ }
+ }
+ }
array = array.call("duplicate"); //dupe, so undo/redo works better
}
object->set_array(array);
update_property();
}
-void EditorPropertyArray::setup(Variant::Type p_array_type) {
+void EditorPropertyArray::setup(Variant::Type p_array_type, const String &p_hint_string) {
array_type = p_array_type;
+
+ if (array_type == Variant::ARRAY && !p_hint_string.empty()) {
+ int hint_subtype_seperator = p_hint_string.find(":");
+ if (hint_subtype_seperator >= 0) {
+ String subtype_string = p_hint_string.substr(0, hint_subtype_seperator);
+ int slash_pos = subtype_string.find("/");
+ if (slash_pos >= 0) {
+ subtype_hint = PropertyHint(subtype_string.substr(slash_pos + 1, subtype_string.size() - slash_pos - 1).to_int());
+ subtype_string = subtype_string.substr(0, slash_pos);
+ }
+
+ subtype_hint_string = p_hint_string.substr(hint_subtype_seperator + 1, p_hint_string.size() - hint_subtype_seperator - 1);
+ subtype = Variant::Type(subtype_string.to_int());
+ }
+ }
}
void EditorPropertyArray::_bind_methods() {
@@ -630,6 +487,10 @@ EditorPropertyArray::EditorPropertyArray() {
change_type->add_item(type, i);
}
changing_type_idx = -1;
+
+ subtype = Variant::NIL;
+ subtype_hint = PROPERTY_HINT_NONE;
+ subtype_hint_string = "";
}
///////////////////// DICTIONARY ///////////////////////////
diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h
index d5eecd9106..46c9bebf2a 100644
--- a/editor/editor_properties_array_dict.h
+++ b/editor/editor_properties_array_dict.h
@@ -93,6 +93,9 @@ class EditorPropertyArray : public EditorProperty {
EditorSpinSlider *page;
HBoxContainer *page_hb;
Variant::Type array_type;
+ Variant::Type subtype;
+ PropertyHint subtype_hint;
+ String subtype_hint_string;
void _page_changed(double p_page);
void _length_changed(double p_page);
@@ -108,7 +111,7 @@ protected:
void _notification(int p_what);
public:
- void setup(Variant::Type p_array_type);
+ void setup(Variant::Type p_array_type, const String &p_hint_string = "");
virtual void update_property();
EditorPropertyArray();
};
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index 310c3b3a52..71e9aced7e 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -326,7 +326,7 @@ void EditorResourcePreview::queue_edited_resource_preview(const Ref<Resource> &p
if (cache.has(path_id) && cache[path_id].last_hash == p_res->hash_edited_version()) {
cache[path_id].order = order++;
- p_receiver->call_deferred(p_receiver_func, path_id, cache[path_id].preview, cache[path_id].small_preview, p_userdata);
+ p_receiver->call(p_receiver_func, path_id, cache[path_id].preview, cache[path_id].small_preview, p_userdata);
preview_mutex->unlock();
return;
}
@@ -351,7 +351,7 @@ void EditorResourcePreview::queue_resource_preview(const String &p_path, Object
preview_mutex->lock();
if (cache.has(p_path)) {
cache[p_path].order = order++;
- p_receiver->call_deferred(p_receiver_func, p_path, cache[p_path].preview, cache[p_path].small_preview, p_userdata);
+ p_receiver->call(p_receiver_func, p_path, cache[p_path].preview, cache[p_path].small_preview, p_userdata);
preview_mutex->unlock();
return;
}
diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp
index 9d3ab59116..a28d071d77 100644
--- a/editor/editor_sectioned_inspector.cpp
+++ b/editor/editor_sectioned_inspector.cpp
@@ -298,19 +298,18 @@ EditorInspector *SectionedInspector::get_inspector() {
return inspector;
}
-SectionedInspector::SectionedInspector() {
-
- obj = -1;
-
- search_box = NULL;
-
+SectionedInspector::SectionedInspector() :
+ obj(-1),
+ sections(memnew(Tree)),
+ filter(memnew(SectionedInspectorFilter)),
+ inspector(memnew(EditorInspector)),
+ search_box(NULL) {
add_constant_override("autohide", 1); // Fixes the dragger always showing up
VBoxContainer *left_vb = memnew(VBoxContainer);
left_vb->set_custom_minimum_size(Size2(170, 0) * EDSCALE);
add_child(left_vb);
- sections = memnew(Tree);
sections->set_v_size_flags(SIZE_EXPAND_FILL);
sections->set_hide_root(true);
@@ -321,8 +320,6 @@ SectionedInspector::SectionedInspector() {
right_vb->set_h_size_flags(SIZE_EXPAND_FILL);
add_child(right_vb);
- filter = memnew(SectionedInspectorFilter);
- inspector = memnew(EditorInspector);
inspector->set_v_size_flags(SIZE_EXPAND_FILL);
right_vb->add_child(inspector, true);
inspector->set_use_doc_hints(true);
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index fdfa094ba2..039ba22a77 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -256,6 +256,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_THREAD_SAFE_METHOD_
+ /* Languages */
+
{
String lang_hint = "en";
String host_lang = OS::get_singleton()->get_locale();
@@ -291,11 +293,13 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["interface/editor/editor_language"] = PropertyInfo(Variant::STRING, "interface/editor/editor_language", PROPERTY_HINT_ENUM, lang_hint, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
}
+ /* Interface */
+
+ // Editor
_initial_set("interface/editor/display_scale", 0);
hints["interface/editor/display_scale"] = PropertyInfo(Variant::INT, "interface/editor/display_scale", PROPERTY_HINT_ENUM, "Auto,75%,100%,125%,150%,175%,200%,Custom", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
_initial_set("interface/editor/custom_display_scale", 1.0f);
hints["interface/editor/custom_display_scale"] = PropertyInfo(Variant::REAL, "interface/editor/custom_display_scale", PROPERTY_HINT_RANGE, "0.75,3,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
- _initial_set("interface/scene_tabs/show_script_button", false);
_initial_set("interface/editor/main_font_size", 14);
hints["interface/editor/main_font_size"] = PropertyInfo(Variant::INT, "interface/editor/main_font_size", PROPERTY_HINT_RANGE, "10,40,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
_initial_set("interface/editor/code_font_size", 14);
@@ -317,12 +321,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["interface/editor/dim_amount"] = PropertyInfo(Variant::REAL, "interface/editor/dim_amount", PROPERTY_HINT_RANGE, "0,1,0.01", PROPERTY_USAGE_DEFAULT);
_initial_set("interface/editor/dim_transition_time", 0.08f);
hints["interface/editor/dim_transition_time"] = PropertyInfo(Variant::REAL, "interface/editor/dim_transition_time", PROPERTY_HINT_RANGE, "0,1,0.001", PROPERTY_USAGE_DEFAULT);
-
_initial_set("interface/editor/separate_distraction_mode", false);
-
_initial_set("interface/editor/save_each_scene_on_quit", true); // Regression
_initial_set("interface/editor/quit_confirmation", true);
+ // Theme
_initial_set("interface/theme/preset", "Default");
hints["interface/theme/preset"] = PropertyInfo(Variant::STRING, "interface/theme/preset", PROPERTY_HINT_ENUM, "Default,Alien,Arc,Godot 2,Grey,Light,Solarized (Dark),Solarized (Light),Custom", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
_initial_set("interface/theme/icon_and_font_color", 0);
@@ -342,35 +345,78 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("interface/theme/custom_theme", "");
hints["interface/theme/custom_theme"] = PropertyInfo(Variant::STRING, "interface/theme/custom_theme", PROPERTY_HINT_GLOBAL_FILE, "*.res,*.tres,*.theme", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ // Scene tabs
_initial_set("interface/scene_tabs/show_extension", false);
_initial_set("interface/scene_tabs/show_thumbnail_on_hover", true);
_initial_set("interface/scene_tabs/resize_if_many_tabs", true);
_initial_set("interface/scene_tabs/minimum_width", 50);
hints["interface/scene_tabs/minimum_width"] = PropertyInfo(Variant::INT, "interface/scene_tabs/minimum_width", PROPERTY_HINT_RANGE, "50,500,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ _initial_set("interface/scene_tabs/show_script_button", false);
+
+ /* Filesystem */
+ // Directories
_initial_set("filesystem/directories/autoscan_project_path", "");
hints["filesystem/directories/autoscan_project_path"] = PropertyInfo(Variant::STRING, "filesystem/directories/autoscan_project_path", PROPERTY_HINT_GLOBAL_DIR);
_initial_set("filesystem/directories/default_project_path", OS::get_singleton()->has_environment("HOME") ? OS::get_singleton()->get_environment("HOME") : OS::get_singleton()->get_system_dir(OS::SYSTEM_DIR_DOCUMENTS));
hints["filesystem/directories/default_project_path"] = PropertyInfo(Variant::STRING, "filesystem/directories/default_project_path", PROPERTY_HINT_GLOBAL_DIR);
- _initial_set("filesystem/directories/default_project_export_path", "");
- hints["filesystem/directories/default_project_export_path"] = PropertyInfo(Variant::STRING, "filesystem/directories/default_project_export_path", PROPERTY_HINT_GLOBAL_DIR);
- _initial_set("interface/scene_tabs/show_script_button", false);
+ // On save
+ _initial_set("filesystem/on_save/compress_binary_resources", true);
+ _initial_set("filesystem/on_save/safe_save_on_backup_then_rename", true);
+
+ // File dialog
+ _initial_set("filesystem/file_dialog/show_hidden_files", false);
+ _initial_set("filesystem/file_dialog/display_mode", 0);
+ hints["filesystem/file_dialog/display_mode"] = PropertyInfo(Variant::INT, "filesystem/file_dialog/display_mode", PROPERTY_HINT_ENUM, "Thumbnails,List");
+ _initial_set("filesystem/file_dialog/thumbnail_size", 64);
+ hints["filesystem/file_dialog/thumbnail_size"] = PropertyInfo(Variant::INT, "filesystem/file_dialog/thumbnail_size", PROPERTY_HINT_RANGE, "32,128,16");
+
+ // Import
+ _initial_set("filesystem/import/pvrtc_texture_tool", "");
+#ifdef WINDOWS_ENABLED
+ hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "*.exe");
+#else
+ hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "");
+#endif
+ _initial_set("filesystem/import/pvrtc_fast_conversion", false);
+
+ /* Docks */
+
+ // SceneTree
+ _initial_set("docks/scene_tree/start_create_dialog_fully_expanded", false);
+ _initial_set("docks/scene_tree/draw_relationship_lines", true);
+ _initial_set("docks/scene_tree/relationship_line_color", Color::html("464646"));
+
+ // FileSystem
+ _initial_set("docks/filesystem/display_mode", 0);
+ hints["docks/filesystem/display_mode"] = PropertyInfo(Variant::INT, "docks/filesystem/display_mode", PROPERTY_HINT_ENUM, "Tree only, Split");
+ _initial_set("docks/filesystem/thumbnail_size", 64);
+ hints["docks/filesystem/thumbnail_size"] = PropertyInfo(Variant::INT, "docks/filesystem/thumbnail_size", PROPERTY_HINT_RANGE, "32,128,16");
+ _initial_set("docks/filesystem/files_display_mode", 0);
+ hints["docks/filesystem/files_display_mode"] = PropertyInfo(Variant::INT, "docks/filesystem/files_display_mode", PROPERTY_HINT_ENUM, "Thumbnails,List");
+ _initial_set("docks/filesystem/always_show_folders", true);
+
+ // Property editor
+ _initial_set("docks/property_editor/auto_refresh_interval", 0.3);
+
+ /* Text editor */
+
+ // Theme
_initial_set("text_editor/theme/color_theme", "Adaptive");
hints["text_editor/theme/color_theme"] = PropertyInfo(Variant::STRING, "text_editor/theme/color_theme", PROPERTY_HINT_ENUM, "Adaptive,Default,Custom");
-
_initial_set("text_editor/theme/line_spacing", 6);
_initial_set("text_editor/theme/selection_color", Color::html("40808080"));
_load_default_text_editor_theme();
+ // Highlighting
_initial_set("text_editor/highlighting/syntax_highlighting", true);
-
_initial_set("text_editor/highlighting/highlight_all_occurrences", true);
_initial_set("text_editor/highlighting/highlight_current_line", true);
_initial_set("text_editor/highlighting/highlight_type_safe_lines", true);
- _initial_set("text_editor/cursor/scroll_past_end_of_file", false);
+ // Indent
_initial_set("text_editor/indent/type", 0);
hints["text_editor/indent/type"] = PropertyInfo(Variant::INT, "text_editor/indent/type", PROPERTY_HINT_ENUM, "Tabs,Spaces");
_initial_set("text_editor/indent/size", 4);
@@ -379,6 +425,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("text_editor/indent/convert_indent_on_save", false);
_initial_set("text_editor/indent/draw_tabs", true);
+ // Line numbers
_initial_set("text_editor/line_numbers/show_line_numbers", true);
_initial_set("text_editor/line_numbers/line_numbers_zero_padded", false);
_initial_set("text_editor/line_numbers/show_breakpoint_gutter", true);
@@ -388,35 +435,45 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("text_editor/line_numbers/line_length_guideline_column", 80);
hints["text_editor/line_numbers/line_length_guideline_column"] = PropertyInfo(Variant::INT, "text_editor/line_numbers/line_length_guideline_column", PROPERTY_HINT_RANGE, "20, 160, 1");
+ // Open scripts
_initial_set("text_editor/open_scripts/smooth_scrolling", true);
_initial_set("text_editor/open_scripts/v_scroll_speed", 80);
_initial_set("text_editor/open_scripts/show_members_overview", true);
+ // Files
_initial_set("text_editor/files/trim_trailing_whitespace_on_save", false);
- _initial_set("text_editor/completion/idle_parse_delay", 2);
+ _initial_set("text_editor/files/autosave_interval_secs", 0);
+ _initial_set("text_editor/files/restore_scripts_on_load", true);
+
+ // Tools
_initial_set("text_editor/tools/create_signal_callbacks", true);
_initial_set("text_editor/tools/sort_members_outline_alphabetically", false);
- _initial_set("text_editor/files/autosave_interval_secs", 0);
+ // Cursor
+ _initial_set("text_editor/cursor/scroll_past_end_of_file", false);
_initial_set("text_editor/cursor/block_caret", false);
_initial_set("text_editor/cursor/caret_blink", true);
_initial_set("text_editor/cursor/caret_blink_speed", 0.5);
hints["text_editor/cursor/caret_blink_speed"] = PropertyInfo(Variant::REAL, "text_editor/cursor/caret_blink_speed", PROPERTY_HINT_RANGE, "0.1, 10, 0.01");
_initial_set("text_editor/cursor/right_click_moves_caret", true);
+ // Completion
+ _initial_set("text_editor/completion/idle_parse_delay", 2);
_initial_set("text_editor/completion/auto_brace_complete", false);
_initial_set("text_editor/completion/put_callhint_tooltip_below_current_line", true);
_initial_set("text_editor/completion/callhint_tooltip_offset", Vector2());
- _initial_set("text_editor/files/restore_scripts_on_load", true);
_initial_set("text_editor/completion/complete_file_paths", true);
_initial_set("text_editor/completion/add_type_hints", false);
- _initial_set("docks/scene_tree/start_create_dialog_fully_expanded", false);
- _initial_set("docks/scene_tree/draw_relationship_lines", true);
- _initial_set("docks/scene_tree/relationship_line_color", Color::html("464646"));
+ // Help
+ _initial_set("text_editor/help/show_help_index", true);
+ /* Editors */
+
+ // GridMap
_initial_set("editors/grid_map/pick_distance", 5000.0);
+ // 3D
_initial_set("editors/3d/primary_grid_color", Color::html("909090"));
hints["editors/3d/primary_grid_color"] = PropertyInfo(Variant::COLOR, "editors/3d/primary_grid_color", PROPERTY_HINT_COLOR_NO_ALPHA, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
@@ -433,7 +490,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("editors/3d/default_z_near", 0.05);
_initial_set("editors/3d/default_z_far", 500.0);
- // navigation
+ // 3D: Navigation
_initial_set("editors/3d/navigation/navigation_scheme", 0);
_initial_set("editors/3d/navigation/invert_y_axis", false);
hints["editors/3d/navigation/navigation_scheme"] = PropertyInfo(Variant::INT, "editors/3d/navigation/navigation_scheme", PROPERTY_HINT_ENUM, "Godot,Maya,Modo");
@@ -447,14 +504,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["editors/3d/navigation/pan_modifier"] = PropertyInfo(Variant::INT, "editors/3d/navigation/pan_modifier", PROPERTY_HINT_ENUM, "None,Shift,Alt,Meta,Ctrl");
_initial_set("editors/3d/navigation/zoom_modifier", 4);
hints["editors/3d/navigation/zoom_modifier"] = PropertyInfo(Variant::INT, "editors/3d/navigation/zoom_modifier", PROPERTY_HINT_ENUM, "None,Shift,Alt,Meta,Ctrl");
-
- // _initial_set("editors/3d/navigation/emulate_numpad", false); not used at the moment
_initial_set("editors/3d/navigation/warped_mouse_panning", true);
- // navigation feel
+ // 3D: Navigation feel
_initial_set("editors/3d/navigation_feel/orbit_sensitivity", 0.4);
hints["editors/3d/navigation_feel/orbit_sensitivity"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_sensitivity", PROPERTY_HINT_RANGE, "0.0, 2, 0.01");
-
_initial_set("editors/3d/navigation_feel/orbit_inertia", 0.05);
hints["editors/3d/navigation_feel/orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
_initial_set("editors/3d/navigation_feel/translation_inertia", 0.15);
@@ -466,7 +520,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("editors/3d/navigation_feel/manipulation_translation_inertia", 0.075);
hints["editors/3d/navigation_feel/manipulation_translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/manipulation_translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
- // freelook
+ // 3D: Freelook
_initial_set("editors/3d/freelook/freelook_inertia", 0.1);
hints["editors/3d/freelook/freelook_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/freelook/freelook_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
_initial_set("editors/3d/freelook/freelook_base_speed", 5.0);
@@ -477,6 +531,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["editors/3d/freelook/freelook_modifier_speed_factor"] = PropertyInfo(Variant::REAL, "editors/3d/freelook/freelook_modifier_speed_factor", PROPERTY_HINT_RANGE, "0.0, 10.0, 0.1");
_initial_set("editors/3d/freelook/freelook_speed_zoom_link", false);
+ // 2D
_initial_set("editors/2d/grid_color", Color(1.0, 1.0, 1.0, 0.07));
_initial_set("editors/2d/guides_color", Color(0.6, 0.0, 0.8));
_initial_set("editors/2d/bone_width", 5);
@@ -493,9 +548,19 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("editors/2d/scroll_to_pan", false);
_initial_set("editors/2d/pan_speed", 20);
+ // Polygon editor
_initial_set("editors/poly_editor/point_grab_radius", 8);
_initial_set("editors/poly_editor/show_previous_outline", true);
+ // Animation
+ _initial_set("editors/animation/autorename_animation_tracks", true);
+ _initial_set("editors/animation/confirm_insert_track", true);
+ _initial_set("editors/animation/onion_layers_past_color", Color(1, 0, 0));
+ _initial_set("editors/animation/onion_layers_future_color", Color(0, 1, 0));
+
+ /* Run */
+
+ // Window placement
_initial_set("run/window_placement/rect", 1);
hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Top Left,Centered,Custom Position,Force Maximized,Force Fullscreen");
String screen_hints = "Same as Editor,Previous Monitor,Next Monitor";
@@ -506,54 +571,15 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("run/window_placement/screen", 0);
hints["run/window_placement/screen"] = PropertyInfo(Variant::INT, "run/window_placement/screen", PROPERTY_HINT_ENUM, screen_hints);
- _initial_set("filesystem/on_save/compress_binary_resources", true);
- _initial_set("filesystem/on_save/save_modified_external_resources", true);
-
- _initial_set("text_editor/tools/create_signal_callbacks", true);
-
- _initial_set("filesystem/file_dialog/show_hidden_files", false);
- _initial_set("filesystem/file_dialog/display_mode", 0);
- hints["filesystem/file_dialog/display_mode"] = PropertyInfo(Variant::INT, "filesystem/file_dialog/display_mode", PROPERTY_HINT_ENUM, "Thumbnails,List");
-
- _initial_set("filesystem/file_dialog/thumbnail_size", 64);
- hints["filesystem/file_dialog/thumbnail_size"] = PropertyInfo(Variant::INT, "filesystem/file_dialog/thumbnail_size", PROPERTY_HINT_RANGE, "32,128,16");
-
- _initial_set("docks/filesystem/display_mode", 0);
- hints["docks/filesystem/display_mode"] = PropertyInfo(Variant::INT, "docks/filesystem/display_mode", PROPERTY_HINT_ENUM, "Tree only, Split");
- _initial_set("docks/filesystem/thumbnail_size", 64);
- hints["docks/filesystem/thumbnail_size"] = PropertyInfo(Variant::INT, "docks/filesystem/thumbnail_size", PROPERTY_HINT_RANGE, "32,128,16");
- _initial_set("docks/filesystem/files_display_mode", 0);
- hints["docks/filesystem/files_display_mode"] = PropertyInfo(Variant::INT, "docks/filesystem/files_display_mode", PROPERTY_HINT_ENUM, "Thumbnails,List");
- _initial_set("docks/filesystem/always_show_folders", true);
-
- _initial_set("editors/animation/autorename_animation_tracks", true);
- _initial_set("editors/animation/confirm_insert_track", true);
- _initial_set("editors/animation/onion_layers_past_color", Color(1, 0, 0));
- _initial_set("editors/animation/onion_layers_future_color", Color(0, 1, 0));
-
- _initial_set("docks/property_editor/texture_preview_width", 48);
- _initial_set("docks/property_editor/auto_refresh_interval", 0.3);
- _initial_set("text_editor/help/show_help_index", true);
-
- _initial_set("filesystem/import/ask_save_before_reimport", false);
-
- _initial_set("filesystem/import/pvrtc_texture_tool", "");
-#ifdef WINDOWS_ENABLED
- hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "*.exe");
-#else
- hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "");
-#endif
- _initial_set("filesystem/import/pvrtc_fast_conversion", false);
-
+ // Auto save
_initial_set("run/auto_save/save_before_running", true);
+
+ // Output
_initial_set("run/output/always_clear_output_on_play", true);
_initial_set("run/output/always_open_output_on_play", true);
_initial_set("run/output/always_close_output_on_stop", false);
- _initial_set("filesystem/resources/save_compressed_resources", true);
- _initial_set("filesystem/resources/auto_reload_modified_images", true);
- _initial_set("filesystem/import/automatic_reimport_on_sources_changed", true);
- _initial_set("filesystem/on_save/safe_save_on_backup_then_rename", true);
+ /* Extra config */
if (p_extra_config.is_valid()) {
diff --git a/editor/editor_settings.h b/editor/editor_settings.h
index 7b0de9617c..dabe697f10 100644
--- a/editor/editor_settings.h
+++ b/editor/editor_settings.h
@@ -71,23 +71,23 @@ private:
bool hide_from_editor;
bool save;
bool restart_if_changed;
- VariantContainer() {
- variant = Variant();
- initial = Variant();
- order = 0;
- hide_from_editor = false;
- has_default_value = false;
- save = false;
- restart_if_changed = false;
+ VariantContainer() :
+ order(0),
+ variant(Variant()),
+ initial(Variant()),
+ has_default_value(false),
+ hide_from_editor(false),
+ save(false),
+ restart_if_changed(false) {
}
- VariantContainer(const Variant &p_variant, int p_order) {
- variant = p_variant;
- initial = Variant();
- order = p_order;
- hide_from_editor = false;
- has_default_value = false;
- save = false;
- restart_if_changed = false;
+ VariantContainer(const Variant &p_variant, int p_order) :
+ order(p_order),
+ variant(p_variant),
+ initial(Variant()),
+ has_default_value(false),
+ hide_from_editor(false),
+ save(false),
+ restart_if_changed(false) {
}
};
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index b6e4375ce9..1b7322fd13 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -63,6 +63,7 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
grabbing_spinner_attempt = true;
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = get_value();
grabbing_spinner = false;
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
}
@@ -107,10 +108,10 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
if (ABS(grabbing_spinner_dist_cache) > 6) {
set_value(get_value() + SGN(grabbing_spinner_dist_cache));
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = get_value();
}
} else {
- set_value(get_value() + get_step() * grabbing_spinner_dist_cache * 10);
- grabbing_spinner_dist_cache = 0;
+ set_value(pre_grab_value + get_step() * grabbing_spinner_dist_cache * 10);
}
}
} else if (updown_offset != -1) {
@@ -154,7 +155,7 @@ void EditorSpinSlider::_grabber_gui_input(const Ref<InputEvent> &p_event) {
void EditorSpinSlider::_notification(int p_what) {
- if (p_what == MainLoop::NOTIFICATION_WM_FOCUS_OUT || p_what == MainLoop::NOTIFICATION_WM_FOCUS_OUT) {
+ if (p_what == MainLoop::NOTIFICATION_WM_FOCUS_OUT || p_what == MainLoop::NOTIFICATION_WM_FOCUS_IN) {
if (grabbing_spinner) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
grabbing_spinner = false;
@@ -434,6 +435,7 @@ EditorSpinSlider::EditorSpinSlider() {
grabbing_spinner_attempt = false;
grabbing_spinner = false;
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = 0;
set_focus_mode(FOCUS_ALL);
updown_offset = -1;
hover_updown = false;
diff --git a/editor/editor_spin_slider.h b/editor/editor_spin_slider.h
index e48eb171b8..9d43bd2884 100644
--- a/editor/editor_spin_slider.h
+++ b/editor/editor_spin_slider.h
@@ -59,6 +59,7 @@ class EditorSpinSlider : public Range {
bool read_only;
float grabbing_spinner_dist_cache;
Vector2 grabbing_spinner_mouse_pos;
+ double pre_grab_value;
LineEdit *value_input;
bool value_input_just_closed;
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 828e608fa4..b2368fff6b 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -951,7 +951,7 @@ void FileSystemDock::_find_remaps(EditorFileSystemDirectory *efsd, const Map<Str
}
void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_new_path,
- Map<String, String> &p_file_renames, Map<String, String> &p_folder_renames) const {
+ Map<String, String> &p_file_renames, Map<String, String> &p_folder_renames) {
//Ensure folder paths end with "/"
String old_path = (p_item.is_file || p_item.path.ends_with("/")) ? p_item.path : (p_item.path + "/");
String new_path = (p_item.is_file || p_new_path.ends_with("/")) ? p_new_path : (p_new_path + "/");
@@ -981,6 +981,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_
print_verbose("Moving " + old_path + " -> " + new_path);
Error err = da->rename(old_path, new_path);
if (err == OK) {
+
//Move/Rename any corresponding import settings too
if (p_item.is_file && FileAccess::exists(old_path + ".import")) {
err = da->rename(old_path + ".import", new_path + ".import");
@@ -1007,9 +1008,11 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_
for (int i = 0; i < file_changed_paths.size(); ++i) {
p_file_renames[file_changed_paths[i]] = file_changed_paths[i].replace_first(old_path, new_path);
print_verbose(" Remap: " + file_changed_paths[i] + " -> " + p_file_renames[file_changed_paths[i]]);
+ emit_signal("files_moved", file_changed_paths[i], p_file_renames[file_changed_paths[i]]);
}
for (int i = 0; i < folder_changed_paths.size(); ++i) {
p_folder_renames[folder_changed_paths[i]] = folder_changed_paths[i].replace_first(old_path, new_path);
+ emit_signal("folder_moved", folder_changed_paths[i], p_folder_renames[folder_changed_paths[i]].substr(0, p_folder_renames[folder_changed_paths[i]].length() - 1));
}
} else {
EditorNode::get_singleton()->add_io_error(TTR("Error moving:") + "\n" + old_path + "\n");
@@ -1205,6 +1208,14 @@ void FileSystemDock::_make_dir_confirm() {
}
}
+void FileSystemDock::_file_deleted(String p_file) {
+ emit_signal("file_deleted", p_file);
+}
+
+void FileSystemDock::_folder_deleted(String p_folder) {
+ emit_signal("folder_deleted", p_folder);
+}
+
void FileSystemDock::_rename_operation_confirm() {
String new_name = rename_dialog_text->get_text().strip_edges();
@@ -2273,6 +2284,9 @@ void FileSystemDock::_bind_methods() {
ClassDB::bind_method(D_METHOD("_file_list_rmb_select"), &FileSystemDock::_file_list_rmb_select);
ClassDB::bind_method(D_METHOD("_file_list_rmb_pressed"), &FileSystemDock::_file_list_rmb_pressed);
+ ClassDB::bind_method(D_METHOD("_file_deleted"), &FileSystemDock::_file_deleted);
+ ClassDB::bind_method(D_METHOD("_folder_deleted"), &FileSystemDock::_folder_deleted);
+
ClassDB::bind_method(D_METHOD("_file_list_thumbnail_done"), &FileSystemDock::_file_list_thumbnail_done);
ClassDB::bind_method(D_METHOD("_tree_thumbnail_done"), &FileSystemDock::_tree_thumbnail_done);
ClassDB::bind_method(D_METHOD("_file_list_activate_file"), &FileSystemDock::_file_list_activate_file);
@@ -2303,6 +2317,11 @@ void FileSystemDock::_bind_methods() {
ADD_SIGNAL(MethodInfo("instance", PropertyInfo(Variant::POOL_STRING_ARRAY, "files")));
ADD_SIGNAL(MethodInfo("open"));
+
+ ADD_SIGNAL(MethodInfo("file_removed", PropertyInfo(Variant::STRING, "file")));
+ ADD_SIGNAL(MethodInfo("folder_removed", PropertyInfo(Variant::STRING, "folder")));
+ ADD_SIGNAL(MethodInfo("files_moved", PropertyInfo(Variant::STRING, "old_file"), PropertyInfo(Variant::STRING, "new_file")));
+ ADD_SIGNAL(MethodInfo("folder_moved", PropertyInfo(Variant::STRING, "old_folder"), PropertyInfo(Variant::STRING, "new_file")));
}
FileSystemDock::FileSystemDock(EditorNode *p_editor) {
@@ -2464,6 +2483,8 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
add_child(owners_editor);
remove_dialog = memnew(DependencyRemoveDialog);
+ remove_dialog->connect("file_removed", this, "_file_deleted");
+ remove_dialog->connect("folder_removed", this, "_folder_deleted");
add_child(remove_dialog);
move_dialog = memnew(EditorDirDialog);
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index df6fa5f9d2..7692566c0b 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -202,13 +202,18 @@ private:
void _get_all_items_in_dir(EditorFileSystemDirectory *efsd, Vector<String> &files, Vector<String> &folders) const;
void _find_remaps(EditorFileSystemDirectory *efsd, const Map<String, String> &renames, Vector<String> &to_remaps) const;
- void _try_move_item(const FileOrFolder &p_item, const String &p_new_path, Map<String, String> &p_file_renames, Map<String, String> &p_folder_renames) const;
+ void _try_move_item(const FileOrFolder &p_item, const String &p_new_path, Map<String, String> &p_file_renames, Map<String, String> &p_folder_renames);
void _try_duplicate_item(const FileOrFolder &p_item, const String &p_new_path) const;
void _update_dependencies_after_move(const Map<String, String> &p_renames) const;
void _update_resource_paths_after_move(const Map<String, String> &p_renames) const;
void _update_favorites_list_after_move(const Map<String, String> &p_files_renames, const Map<String, String> &p_folders_renames) const;
void _update_project_settings_after_move(const Map<String, String> &p_folders_renames) const;
+ void _file_deleted(String p_file);
+ void _folder_deleted(String p_folder);
+ void _files_moved(String p_old_file, String p_new_file);
+ void _folder_moved(String p_old_folder, String p_new_folder);
+
void _resource_created() const;
void _make_dir_confirm();
void _rename_operation_confirm();
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index 705bb1d9c5..6ebe8cfe2c 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -44,8 +44,6 @@
#include "scene/gui/progress_bar.h"
#include "scene/gui/tree.h"
-#define ROOT_PREFIX "res://"
-
const char *FindInFiles::SIGNAL_RESULT_FOUND = "result_found";
const char *FindInFiles::SIGNAL_FINISHED = "finished";
@@ -89,7 +87,6 @@ static bool find_next(const String &line, String pattern, int from, bool match_c
//--------------------------------------------------------------------------------
FindInFiles::FindInFiles() {
- _root_prefix = ROOT_PREFIX;
_searching = false;
_whole_words = true;
_match_case = true;
@@ -182,7 +179,7 @@ void FindInFiles::_iterate() {
_current_dir = _current_dir.plus_file(folder_name);
PoolStringArray sub_dirs;
- _scan_dir(_root_prefix + _current_dir, sub_dirs);
+ _scan_dir("res://" + _current_dir, sub_dirs);
_folders_stack.push_back(sub_dirs);
@@ -348,7 +345,7 @@ FindInFilesDialog::FindInFilesDialog() {
HBoxContainer *hbc = memnew(HBoxContainer);
Label *prefix_label = memnew(Label);
- prefix_label->set_text(ROOT_PREFIX);
+ prefix_label->set_text("res://");
hbc->add_child(prefix_label);
_folder_line_edit = memnew(LineEdit);
@@ -375,10 +372,12 @@ FindInFilesDialog::FindInFilesDialog() {
{
HBoxContainer *hbc = memnew(HBoxContainer);
+ // TODO: Unhardcode this.
Vector<String> exts;
exts.push_back("gd");
if (Engine::get_singleton()->has_singleton("GodotSharp"))
exts.push_back("cs");
+ exts.push_back("shader");
for (int i = 0; i < exts.size(); ++i) {
CheckBox *cb = memnew(CheckBox);
diff --git a/editor/find_in_files.h b/editor/find_in_files.h
index 7f37123430..9705c4796c 100644
--- a/editor/find_in_files.h
+++ b/editor/find_in_files.h
@@ -73,7 +73,6 @@ private:
// Config
String _pattern;
Set<String> _extension_filter;
- String _root_prefix;
String _root_dir;
bool _whole_words;
bool _match_case;
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index cb9703342f..7ff3daf3d2 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -189,7 +189,7 @@ void GroupDialog::_group_renamed() {
if (name == "") {
renamed_group->set_text(0, selected_group);
- error->set_text(TTR("invalid Group name."));
+ error->set_text(TTR("Invalid group name."));
error->popup_centered();
return;
}
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index afd09748f3..93c462f747 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -771,7 +771,7 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
int binormal_pos = (binormal_src->stride ? binormal_src->stride : 3) * p.indices[src + binormal_ofs];
ERR_FAIL_INDEX_V(binormal_pos, binormal_src->array.size(), ERR_INVALID_DATA);
- Vector3 binormal = Vector3(-binormal_src->array[binormal_pos + 0], -binormal_src->array[binormal_pos + 1], -binormal_src->array[binormal_pos + 2]); // Due to Godots face order it seems we need to flip our binormal!
+ Vector3 binormal = Vector3(binormal_src->array[binormal_pos + 0], binormal_src->array[binormal_pos + 1], binormal_src->array[binormal_pos + 2]);
int tangent_pos = (tangent_src->stride ? tangent_src->stride : 3) * p.indices[src + tangent_ofs];
ERR_FAIL_INDEX_V(tangent_pos, tangent_src->array.size(), ERR_INVALID_DATA);
@@ -1191,6 +1191,7 @@ Error ColladaImport::_create_resources(Collada::Node *p_node, bool p_use_compres
if (collada.state.mesh_data_map.has(meshid)) {
Ref<ArrayMesh> mesh = Ref<ArrayMesh>(memnew(ArrayMesh));
const Collada::MeshData &meshdata = collada.state.mesh_data_map[meshid];
+ mesh->set_name(meshdata.name);
Error err = _create_mesh_surfaces(false, mesh, ng->material_map, meshdata, apply_xform, bone_remap, skin, NULL, Vector<Ref<ArrayMesh> >(), false);
ERR_FAIL_COND_V(err, err);
@@ -1655,8 +1656,9 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
}
}
- Quat q = Math::is_equal_approx(xform.basis.determinant(), 0) ? Quat() : xform.basis.get_rotation_quat();
Vector3 s = xform.basis.get_scale();
+ bool singular_matrix = Math::is_equal_approx(s.x, 0.0f) || Math::is_equal_approx(s.y, 0.0f) || Math::is_equal_approx(s.z, 0.0f);
+ Quat q = singular_matrix ? Quat() : xform.basis.get_rotation_quat();
Vector3 l = xform.origin;
animation->transform_track_insert_key(track, snapshots[i], l, q, s);
@@ -1705,8 +1707,9 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
xform = sk->get_bone_rest(nm.bone).affine_inverse() * xform;
- Quat q = Math::is_equal_approx(xform.basis.determinant(), 0) ? Quat() : xform.basis.get_rotation_quat();
Vector3 s = xform.basis.get_scale();
+ bool singular_matrix = Math::is_equal_approx(s.x, 0.0f) || Math::is_equal_approx(s.y, 0.0f) || Math::is_equal_approx(s.z, 0.0f);
+ Quat q = singular_matrix ? Quat() : xform.basis.get_rotation_quat();
Vector3 l = xform.origin;
animation->transform_track_insert_key(track, 0, l, q, s);
diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp
index 00ca86a43b..b5d646d5d4 100644
--- a/editor/import/editor_scene_importer_gltf.cpp
+++ b/editor/import/editor_scene_importer_gltf.cpp
@@ -899,16 +899,7 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
array[Mesh::ARRAY_NORMAL] = _decode_accessor_as_vec3(state, a["NORMAL"], true);
}
if (a.has("TANGENT")) {
- PoolVector<float> tans = _decode_accessor_as_floats(state, a["TANGENT"], true);
- { // we need our binormals inversed, so flip our w component.
- int ts = tans.size();
- PoolVector<float>::Write w = tans.write();
-
- for (int j = 3; j < ts; j += 4) {
- w[j] *= -1.0;
- }
- }
- array[Mesh::ARRAY_TANGENT] = tans;
+ array[Mesh::ARRAY_TANGENT] = _decode_accessor_as_floats(state, a["TANGENT"], true);
}
if (a.has("TEXCOORD_0")) {
array[Mesh::ARRAY_TEX_UV] = _decode_accessor_as_vec2(state, a["TEXCOORD_0"], true);
diff --git a/editor/import/editor_scene_importer_gltf.h b/editor/import/editor_scene_importer_gltf.h
index 8258ec41fd..721db30112 100644
--- a/editor/import/editor_scene_importer_gltf.h
+++ b/editor/import/editor_scene_importer_gltf.h
@@ -114,14 +114,14 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
Vector<int> children;
Vector<Node *> godot_nodes;
- GLTFNode() {
- // child_of_skeleton = -1;
- // skeleton_skin = -1;
- mesh = -1;
- camera = -1;
- parent = -1;
- skin = -1;
- scale = Vector3(1, 1, 1);
+ GLTFNode() :
+ parent(-1),
+ mesh(-1),
+ camera(-1),
+ skin(-1),
+ //skeleton_skin(-1),
+ //child_of_skeleton(-1),
+ scale(Vector3(1, 1, 1)) {
}
};
@@ -134,12 +134,12 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
bool indices;
//matrices need to be transformed to this
- GLTFBufferView() {
- buffer = 0;
- byte_offset = 0;
- byte_length = 0;
- byte_stride = 0;
- indices = false;
+ GLTFBufferView() :
+ buffer(0),
+ byte_offset(0),
+ byte_length(0),
+ byte_stride(0),
+ indices(false) {
}
};
diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp
index 55f4cc7439..85ea0d343c 100644
--- a/editor/import/resource_importer_wav.cpp
+++ b/editor/import/resource_importer_wav.cpp
@@ -272,12 +272,18 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
for (int i = 0; i < 10; i++)
file->get_32(); // i wish to know why should i do this... no doc!
- // only read 0x00 (loop forward) and 0x01 (loop ping-pong) and skip anything else because
- // it's not supported (loop backward), reserved for future uses or sampler specific
+ // only read 0x00 (loop forward), 0x01 (loop ping-pong) and 0x02 (loop backward)
+ // Skip anything else because it's not supported, reserved for future uses or sampler specific
// from https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl (loop type values table)
int loop_type = file->get_32();
- if (loop_type == 0x00 || loop_type == 0x01) {
- loop = loop_type ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD;
+ if (loop_type == 0x00 || loop_type == 0x01 || loop_type == 0x02) {
+ if (loop_type == 0x00) {
+ loop = AudioStreamSample::LOOP_FORWARD;
+ } else if (loop_type == 0x01) {
+ loop = AudioStreamSample::LOOP_PING_PONG;
+ } else if (loop_type == 0x02) {
+ loop = AudioStreamSample::LOOP_BACKWARD;
+ }
loop_begin = file->get_32();
loop_end = file->get_32();
}
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 750fca2852..d201087ecf 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -334,6 +334,7 @@ void InspectorDock::_notification(int p_what) {
set_theme(editor->get_gui_base()->get_theme());
resource_new_button->set_icon(get_icon("New", "EditorIcons"));
resource_load_button->set_icon(get_icon("Load", "EditorIcons"));
+ resource_save_button->set_icon(get_icon("Save", "EditorIcons"));
backward_button->set_icon(get_icon("Back", "EditorIcons"));
forward_button->set_icon(get_icon("Forward", "EditorIcons"));
history_menu->set_icon(get_icon("History", "EditorIcons"));
@@ -416,6 +417,7 @@ void InspectorDock::update(Object *p_object) {
object_menu->set_disabled(false);
search->set_editable(true);
+ resource_save_button->set_disabled(!is_resource);
PopupMenu *p = object_menu->get_popup();
@@ -515,6 +517,16 @@ InspectorDock::InspectorDock(EditorNode *p_editor, EditorData &p_editor_data) {
resource_load_button->connect("pressed", this, "_open_resource_selector");
resource_load_button->set_focus_mode(Control::FOCUS_NONE);
+ resource_save_button = memnew(MenuButton);
+ resource_save_button->set_tooltip(TTR("Save the currently edited resource."));
+ resource_save_button->set_icon(get_icon("Save", "EditorIcons"));
+ general_options_hb->add_child(resource_save_button);
+ resource_save_button->get_popup()->add_item(TTR("Save"), RESOURCE_SAVE);
+ resource_save_button->get_popup()->add_item(TTR("Save As..."), RESOURCE_SAVE_AS);
+ resource_save_button->get_popup()->connect("id_pressed", this, "_menu_option");
+ resource_save_button->set_focus_mode(Control::FOCUS_NONE);
+ resource_save_button->set_disabled(true);
+
general_options_hb->add_spacer();
backward_button = memnew(ToolButton);
diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp
index 16423decc4..dfdf56a2ef 100644
--- a/editor/plugins/abstract_polygon_2d_editor.cpp
+++ b/editor/plugins/abstract_polygon_2d_editor.cpp
@@ -103,6 +103,11 @@ bool AbstractPolygon2DEditor::_is_line() const {
return false;
}
+bool AbstractPolygon2DEditor::_has_uv() const {
+
+ return false;
+}
+
int AbstractPolygon2DEditor::_get_polygon_count() const {
return 1;
@@ -202,12 +207,7 @@ void AbstractPolygon2DEditor::_notification(int p_what) {
button_edit->set_pressed(true);
get_tree()->connect("node_removed", this, "_node_removed");
-
create_resource->connect("confirmed", this, "_create_resource");
-
- } break;
- case NOTIFICATION_PHYSICS_PROCESS: {
-
} break;
}
}
@@ -250,8 +250,12 @@ void AbstractPolygon2DEditor::_wip_close() {
_set_polygon(0, wip);
} else if (wip.size() >= (_is_line() ? 2 : 3)) {
- undo_redo->create_action(TTR("Create Poly"));
+ undo_redo->create_action(TTR("Create Polygon"));
_action_add_polygon(wip);
+ if (_has_uv()) {
+ undo_redo->add_do_method(_get_node(), "set_uv", PoolVector<Vector2>());
+ undo_redo->add_undo_method(_get_node(), "set_uv", _get_node()->get("uv"));
+ }
_commit_action();
} else {
@@ -313,7 +317,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
if (vertices.size() < (_is_line() ? 2 : 3)) {
vertices.push_back(cpoint);
- undo_redo->create_action(TTR("Edit Poly"));
+ undo_redo->create_action(TTR("Edit Polygon"));
selected_point = Vertex(insert.polygon, vertices.size());
_action_set_polygon(insert.polygon, vertices);
_commit_action();
@@ -331,7 +335,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
undo_redo->create_action(TTR("Insert Point"));
_action_set_polygon(insert.polygon, vertices);
_commit_action();
-
return true;
}
} else {
@@ -363,7 +366,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
ERR_FAIL_INDEX_V(edited_point.vertex, vertices.size(), false);
vertices.write[edited_point.vertex] = edited_point.pos - _get_offset(edited_point.polygon);
- undo_redo->create_action(TTR("Edit Poly"));
+ undo_redo->create_action(TTR("Edit Polygon"));
_action_set_polygon(edited_point.polygon, pre_move_edit, vertices);
_commit_action();
@@ -422,7 +425,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
return true;
} else {
- const real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
+ const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
if (!_is_line() && wip.size() > 1 && xform.xform(wip[0]).distance_to(gpoint) < grab_threshold) {
//wip closed
@@ -531,6 +534,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
}
void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
+
if (!_get_node())
return;
@@ -561,7 +565,7 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
offset = _get_offset(j);
}
- if (!wip_active && j == edited_point.polygon && EDITOR_DEF("editors/poly_editor/show_previous_outline", true)) {
+ if (!wip_active && j == edited_point.polygon && EDITOR_GET("editors/poly_editor/show_previous_outline")) {
const Color col = Color(0.5, 0.5, 0.5); // FIXME polygon->get_outline_color();
const int n = pre_move_edit.size();
@@ -631,9 +635,11 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
_set_node(p_polygon);
- //Enable the pencil tool if the polygon is empty
+ // Enable the pencil tool if the polygon is empty.
if (_is_empty())
_menu_option(MODE_CREATE);
+ else
+ _menu_option(MODE_EDIT);
wip.clear();
wip_active = false;
@@ -664,12 +670,12 @@ void AbstractPolygon2DEditor::remove_point(const Vertex &p_vertex) {
vertices.remove(p_vertex.vertex);
- undo_redo->create_action(TTR("Edit Poly (Remove Point)"));
+ undo_redo->create_action(TTR("Edit Polygon (Remove Point)"));
_action_set_polygon(p_vertex.polygon, vertices);
_commit_action();
} else {
- undo_redo->create_action(TTR("Remove Poly And Point"));
+ undo_redo->create_action(TTR("Remove Polygon And Point"));
_action_remove_polygon(p_vertex.polygon);
_commit_action();
}
@@ -689,7 +695,7 @@ AbstractPolygon2DEditor::Vertex AbstractPolygon2DEditor::get_active_point() cons
AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_point(const Vector2 &p_pos) const {
- const real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
+ const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
const int n_polygons = _get_polygon_count();
const Transform2D xform = canvas_item_editor->get_canvas_transform() * _get_node()->get_global_transform();
@@ -720,7 +726,7 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_point(const
AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_edge_point(const Vector2 &p_pos) const {
- const real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
+ const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
const real_t eps = grab_threshold * 2;
const real_t eps2 = eps * eps;
@@ -777,19 +783,19 @@ AbstractPolygon2DEditor::AbstractPolygon2DEditor(EditorNode *p_editor, bool p_wi
add_child(button_create);
button_create->connect("pressed", this, "_menu_option", varray(MODE_CREATE));
button_create->set_toggle_mode(true);
- button_create->set_tooltip(TTR("Create a new polygon from scratch"));
+ button_create->set_tooltip(TTR("Create points."));
button_edit = memnew(ToolButton);
add_child(button_edit);
button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT));
button_edit->set_toggle_mode(true);
- button_edit->set_tooltip(TTR("Edit existing polygon:\nLMB: Move Point.\nCtrl+LMB: Split Segment.\nRMB: Erase Point."));
+ button_edit->set_tooltip(TTR("Edit points.\nLMB: Move Point\nRMB: Erase Point"));
button_delete = memnew(ToolButton);
add_child(button_delete);
button_delete->connect("pressed", this, "_menu_option", varray(MODE_DELETE));
button_delete->set_toggle_mode(true);
- button_delete->set_tooltip(TTR("Delete points"));
+ button_delete->set_tooltip(TTR("Erase points."));
create_resource = memnew(ConfirmationDialog);
add_child(create_resource);
@@ -820,13 +826,11 @@ void AbstractPolygon2DEditorPlugin::make_visible(bool p_visible) {
}
}
-AbstractPolygon2DEditorPlugin::AbstractPolygon2DEditorPlugin(EditorNode *p_node, AbstractPolygon2DEditor *p_polygon_editor, String p_class) {
-
- editor = p_node;
- polygon_editor = p_polygon_editor;
- klass = p_class;
+AbstractPolygon2DEditorPlugin::AbstractPolygon2DEditorPlugin(EditorNode *p_node, AbstractPolygon2DEditor *p_polygon_editor, String p_class) :
+ polygon_editor(p_polygon_editor),
+ editor(p_node),
+ klass(p_class) {
CanvasItemEditor::get_singleton()->add_control_to_menu_panel(polygon_editor);
-
polygon_editor->hide();
}
diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h
index c03670f254..046e8540e7 100644
--- a/editor/plugins/abstract_polygon_2d_editor.h
+++ b/editor/plugins/abstract_polygon_2d_editor.h
@@ -88,12 +88,10 @@ class AbstractPolygon2DEditor : public HBoxContainer {
protected:
enum {
-
MODE_CREATE,
MODE_EDIT,
MODE_DELETE,
MODE_CONT,
-
};
int mode;
@@ -116,13 +114,12 @@ protected:
PosVertex closest_edge_point(const Vector2 &p_pos) const;
bool _is_empty() const;
- void _commit_action();
-protected:
virtual Node2D *_get_node() const = 0;
virtual void _set_node(Node *p_polygon) = 0;
virtual bool _is_line() const;
+ virtual bool _has_uv() const;
virtual int _get_polygon_count() const;
virtual Vector2 _get_offset(int p_idx) const;
virtual Variant _get_polygon(int p_idx) const;
@@ -132,6 +129,7 @@ protected:
virtual void _action_remove_polygon(int p_idx);
virtual void _action_set_polygon(int p_idx, const Variant &p_polygon);
virtual void _action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon);
+ virtual void _commit_action();
virtual bool _has_resource() const;
virtual void _create_resource();
diff --git a/editor/plugins/animation_blend_tree_editor_plugin.h b/editor/plugins/animation_blend_tree_editor_plugin.h
index e2daefdec6..e7934ea3a0 100644
--- a/editor/plugins/animation_blend_tree_editor_plugin.h
+++ b/editor/plugins/animation_blend_tree_editor_plugin.h
@@ -70,9 +70,9 @@ class AnimationNodeBlendTreeEditor : public AnimationTreeNodeEditorPlugin {
String name;
String type;
Ref<Script> script;
- AddOption(const String &p_name = String(), const String &p_type = String()) {
- name = p_name;
- type = p_type;
+ AddOption(const String &p_name = String(), const String &p_type = String()) :
+ name(p_name),
+ type(p_type) {
}
};
diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp
index e83773257b..990c77430f 100644
--- a/editor/plugins/animation_state_machine_editor.cpp
+++ b/editor/plugins/animation_state_machine_editor.cpp
@@ -849,7 +849,7 @@ void AnimationNodeStateMachineEditor::_state_machine_pos_draw() {
return;
int idx = -1;
- for (int i = 0; node_rects.size(); i++) {
+ for (int i = 0; i < node_rects.size(); i++) {
if (node_rects[i].node_name == playback->get_current_node()) {
idx = i;
break;
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index ee2283a035..89ef52dcce 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -456,7 +456,7 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no
if (Object::cast_to<Viewport>(p_node))
return;
- const real_t grab_distance = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
+ const real_t grab_distance = EDITOR_GET("editors/poly_editor/point_grab_radius");
CanvasItem *canvas_item = Object::cast_to<CanvasItem>(p_node);
for (int i = p_node->get_child_count() - 1; i >= 0; i--) {
@@ -4606,7 +4606,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
warning_child_of_container = memnew(Label);
warning_child_of_container->hide();
- warning_child_of_container->set_text("Warning: Children of a container get their position and size determined only by their parent");
+ warning_child_of_container->set_text(TTR("Warning: Children of a container get their position and size determined only by their parent."));
add_control_to_info_overlay(warning_child_of_container);
h_scroll = memnew(HScrollBar);
@@ -4626,19 +4626,19 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
zoom_minus = memnew(ToolButton);
zoom_hb->add_child(zoom_minus);
zoom_minus->connect("pressed", this, "_button_zoom_minus");
- zoom_minus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_minus", TTR("Zoom out"), KEY_MASK_CMD | KEY_MINUS));
+ zoom_minus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_minus", TTR("Zoom Out"), KEY_MASK_CMD | KEY_MINUS));
zoom_minus->set_focus_mode(FOCUS_NONE);
zoom_reset = memnew(ToolButton);
zoom_hb->add_child(zoom_reset);
zoom_reset->connect("pressed", this, "_button_zoom_reset");
- zoom_reset->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_reset", TTR("Zoom reset"), KEY_MASK_CMD | KEY_0));
+ zoom_reset->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_reset", TTR("Zoom Reset"), KEY_MASK_CMD | KEY_0));
zoom_reset->set_focus_mode(FOCUS_NONE);
zoom_plus = memnew(ToolButton);
zoom_hb->add_child(zoom_plus);
zoom_plus->connect("pressed", this, "_button_zoom_plus");
- zoom_plus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_plus", TTR("Zoom in"), KEY_MASK_CMD | KEY_EQUAL)); // Usually direct access key for PLUS
+ zoom_plus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_plus", TTR("Zoom In"), KEY_MASK_CMD | KEY_EQUAL)); // Usually direct access key for PLUS
zoom_plus->set_focus_mode(FOCUS_NONE);
updating_scroll = false;
diff --git a/editor/plugins/collision_polygon_editor_plugin.cpp b/editor/plugins/collision_polygon_editor_plugin.cpp
index 805a7d3835..9b31f2e24d 100644
--- a/editor/plugins/collision_polygon_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_editor_plugin.cpp
@@ -95,7 +95,7 @@ void Polygon3DEditor::_menu_option(int p_option) {
void Polygon3DEditor::_wip_close() {
- undo_redo->create_action(TTR("Create Poly3D"));
+ undo_redo->create_action(TTR("Create Polygon3D"));
undo_redo->add_undo_method(node, "set_polygon", node->call("get_polygon"));
undo_redo->add_do_method(node, "set_polygon", wip);
undo_redo->add_do_method(this, "_polygon_draw");
@@ -144,7 +144,7 @@ bool Polygon3DEditor::forward_spatial_gui_input(Camera *p_camera, const Ref<Inpu
Vector<Vector2> poly = node->call("get_polygon");
//first check if a point is to be added (segment split)
- real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
+ real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
switch (mode) {
diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp
index 8df40232b0..a32f42cc56 100644
--- a/editor/plugins/item_list_editor_plugin.cpp
+++ b/editor/plugins/item_list_editor_plugin.cpp
@@ -265,6 +265,9 @@ void ItemListEditor::_notification(int p_notification) {
add_button->set_icon(get_icon("Add", "EditorIcons"));
del_button->set_icon(get_icon("Remove", "EditorIcons"));
+ } else if (p_notification == NOTIFICATION_READY) {
+
+ get_tree()->connect("node_removed", this, "_node_removed");
}
}
@@ -341,6 +344,7 @@ bool ItemListEditor::handles(Object *p_object) const {
void ItemListEditor::_bind_methods() {
+ ClassDB::bind_method("_node_removed", &ItemListEditor::_node_removed);
ClassDB::bind_method("_edit_items", &ItemListEditor::_edit_items);
ClassDB::bind_method("_add_button", &ItemListEditor::_add_pressed);
ClassDB::bind_method("_delete_button", &ItemListEditor::_delete_pressed);
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp
index 6a16cf0989..646883fbda 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.cpp
+++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp
@@ -30,425 +30,91 @@
#include "light_occluder_2d_editor_plugin.h"
-#include "canvas_item_editor_plugin.h"
-#include "core/os/file_access.h"
-#include "editor/editor_settings.h"
+Ref<OccluderPolygon2D> LightOccluder2DEditor::_ensure_occluder() const {
-void LightOccluder2DEditor::_notification(int p_what) {
+ Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon();
+ if (!occluder.is_valid()) {
- switch (p_what) {
-
- case NOTIFICATION_READY: {
-
- button_create->set_icon(get_icon("Edit", "EditorIcons"));
- button_edit->set_icon(get_icon("MovePoint", "EditorIcons"));
- button_edit->set_pressed(true);
- get_tree()->connect("node_removed", this, "_node_removed");
- create_poly->connect("confirmed", this, "_create_poly");
-
- } break;
- case NOTIFICATION_PHYSICS_PROCESS: {
-
- } break;
- }
-}
-void LightOccluder2DEditor::_node_removed(Node *p_node) {
-
- if (p_node == node) {
- node = NULL;
- hide();
- canvas_item_editor->update_viewport();
+ occluder = Ref<OccluderPolygon2D>(memnew(OccluderPolygon2D));
+ node->set_occluder_polygon(occluder);
}
+ return occluder;
}
-void LightOccluder2DEditor::_menu_option(int p_option) {
+Node2D *LightOccluder2DEditor::_get_node() const {
- switch (p_option) {
-
- case MODE_CREATE: {
-
- mode = MODE_CREATE;
- button_create->set_pressed(true);
- button_edit->set_pressed(false);
- } break;
- case MODE_EDIT: {
-
- mode = MODE_EDIT;
- button_create->set_pressed(false);
- button_edit->set_pressed(true);
- } break;
- }
+ return node;
}
-void LightOccluder2DEditor::_wip_close(bool p_closed) {
-
- undo_redo->create_action(TTR("Create Poly"));
- undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", node->get_occluder_polygon()->get_polygon());
- undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", wip);
- undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_closed", node->get_occluder_polygon()->is_closed());
- undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_closed", p_closed);
+void LightOccluder2DEditor::_set_node(Node *p_polygon) {
- undo_redo->add_do_method(canvas_item_editor, "update_viewport");
- undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
- undo_redo->commit_action();
- wip.clear();
- wip_active = false;
- mode = MODE_EDIT;
- button_edit->set_pressed(true);
- button_create->set_pressed(false);
- edited_point = -1;
+ node = Object::cast_to<LightOccluder2D>(p_polygon);
}
-bool LightOccluder2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
+bool LightOccluder2DEditor::_is_line() const {
- if (!node)
+ Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon();
+ if (occluder.is_valid())
+ return !occluder->is_closed();
+ else
return false;
-
- if (node->get_occluder_polygon().is_null()) {
- Ref<InputEventMouseButton> mb = p_event;
- if (mb.is_valid() && mb->get_button_index() == 1 && mb->is_pressed()) {
- create_poly->set_text(TTR("No OccluderPolygon2D resource on this node.\nCreate and assign one?"));
- create_poly->popup_centered_minsize();
- }
- return (mb.is_valid() && mb->get_button_index() == 1);
- }
-
- Ref<InputEventMouseButton> mb = p_event;
-
- if (mb.is_valid()) {
-
- Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
-
- Vector2 gpoint = mb->get_position();
- Vector2 cpoint = node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mb->get_position())));
-
- Vector<Vector2> poly = Variant(node->get_occluder_polygon()->get_polygon());
-
- //first check if a point is to be added (segment split)
- real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
-
- switch (mode) {
-
- case MODE_CREATE: {
-
- if (mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) {
-
- if (!wip_active) {
-
- wip.clear();
- wip.push_back(cpoint);
- wip_active = true;
- edited_point_pos = cpoint;
- canvas_item_editor->update_viewport();
- edited_point = 1;
- return true;
- } else {
-
- if (wip.size() > 1 && xform.xform(wip[0]).distance_to(gpoint) < grab_threshold) {
- //wip closed
- _wip_close(true);
-
- return true;
- } else if (wip.size() > 1 && xform.xform(wip[wip.size() - 1]).distance_to(gpoint) < grab_threshold) {
- //wip closed
- _wip_close(false);
- return true;
-
- } else {
-
- wip.push_back(cpoint);
- edited_point = wip.size();
- canvas_item_editor->update_viewport();
- return true;
-
- //add wip point
- }
- }
- } else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed() && wip_active) {
- _wip_close(true);
- }
-
- } break;
-
- case MODE_EDIT: {
-
- if (mb->get_button_index() == BUTTON_LEFT) {
- if (mb->is_pressed()) {
-
- if (mb->get_control()) {
-
- if (poly.size() < 3) {
-
- undo_redo->create_action(TTR("Edit Poly"));
- undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", poly);
- poly.push_back(cpoint);
- undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly);
- undo_redo->add_do_method(canvas_item_editor, "update_viewport");
- undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
- undo_redo->commit_action();
- return true;
- }
-
- //search edges
- int closest_idx = -1;
- Vector2 closest_pos;
- real_t closest_dist = 1e10;
- for (int i = 0; i < poly.size(); i++) {
-
- Vector2 points[2] = { xform.xform(poly[i]),
- xform.xform(poly[(i + 1) % poly.size()]) };
-
- Vector2 cp = Geometry::get_closest_point_to_segment_2d(gpoint, points);
- if (cp.distance_squared_to(points[0]) < CMP_EPSILON2 || cp.distance_squared_to(points[1]) < CMP_EPSILON2)
- continue; //not valid to reuse point
-
- real_t d = cp.distance_to(gpoint);
- if (d < closest_dist && d < grab_threshold) {
- closest_dist = d;
- closest_pos = cp;
- closest_idx = i;
- }
- }
-
- if (closest_idx >= 0) {
-
- pre_move_edit = poly;
- poly.insert(closest_idx + 1, xform.affine_inverse().xform(closest_pos));
- edited_point = closest_idx + 1;
- edited_point_pos = xform.affine_inverse().xform(closest_pos);
- node->get_occluder_polygon()->set_polygon(Variant(poly));
- canvas_item_editor->update_viewport();
- return true;
- }
- } else {
-
- //look for points to move
-
- int closest_idx = -1;
- Vector2 closest_pos;
- real_t closest_dist = 1e10;
- for (int i = 0; i < poly.size(); i++) {
-
- Vector2 cp = xform.xform(poly[i]);
-
- real_t d = cp.distance_to(gpoint);
- if (d < closest_dist && d < grab_threshold) {
- closest_dist = d;
- closest_pos = cp;
- closest_idx = i;
- }
- }
-
- if (closest_idx >= 0) {
-
- pre_move_edit = poly;
- edited_point = closest_idx;
- edited_point_pos = xform.affine_inverse().xform(closest_pos);
- canvas_item_editor->update_viewport();
- return true;
- }
- }
- } else {
-
- if (edited_point != -1) {
-
- //apply
-
- ERR_FAIL_INDEX_V(edited_point, poly.size(), false);
- poly.write[edited_point] = edited_point_pos;
- undo_redo->create_action(TTR("Edit Poly"));
- undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly);
- undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", pre_move_edit);
- undo_redo->add_do_method(canvas_item_editor, "update_viewport");
- undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
- undo_redo->commit_action();
-
- edited_point = -1;
- return true;
- }
- }
- } else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed() && edited_point == -1) {
-
- int closest_idx = -1;
- Vector2 closest_pos;
- real_t closest_dist = 1e10;
- for (int i = 0; i < poly.size(); i++) {
-
- Vector2 cp = xform.xform(poly[i]);
-
- real_t d = cp.distance_to(gpoint);
- if (d < closest_dist && d < grab_threshold) {
- closest_dist = d;
- closest_pos = cp;
- closest_idx = i;
- }
- }
-
- if (closest_idx >= 0) {
-
- undo_redo->create_action(TTR("Edit Poly (Remove Point)"));
- undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", poly);
- poly.remove(closest_idx);
- undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly);
- undo_redo->add_do_method(canvas_item_editor, "update_viewport");
- undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
- undo_redo->commit_action();
- return true;
- }
- }
-
- } break;
- }
- }
-
- Ref<InputEventMouseMotion> mm = p_event;
-
- if (mm.is_valid()) {
-
- if (edited_point != -1 && (wip_active || mm->get_button_mask() & BUTTON_MASK_LEFT)) {
-
- Vector2 gpoint = mm->get_position();
- Vector2 cpoint = canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint);
- cpoint = canvas_item_editor->snap_point(cpoint);
- edited_point_pos = node->get_global_transform().affine_inverse().xform(cpoint);
-
- canvas_item_editor->update_viewport();
- }
- }
-
- return false;
}
-void LightOccluder2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
-
- if (!node || !node->get_occluder_polygon().is_valid())
- return;
-
- Vector<Vector2> poly;
+int LightOccluder2DEditor::_get_polygon_count() const {
- if (wip_active)
- poly = wip;
+ Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon();
+ if (occluder.is_valid())
+ return occluder->get_polygon().size();
else
- poly = Variant(node->get_occluder_polygon()->get_polygon());
-
- Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
- Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons");
-
- for (int i = 0; i < poly.size(); i++) {
-
- Vector2 p, p2;
- p = i == edited_point ? edited_point_pos : poly[i];
- if ((wip_active && i == poly.size() - 1) || (((i + 1) % poly.size()) == edited_point))
- p2 = edited_point_pos;
- else
- p2 = poly[(i + 1) % poly.size()];
+ return 0;
+}
- Vector2 point = xform.xform(p);
- Vector2 next_point = xform.xform(p2);
+Variant LightOccluder2DEditor::_get_polygon(int p_idx) const {
- Color col = Color(1, 0.3, 0.1, 0.8);
+ Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon();
+ if (occluder.is_valid())
+ return occluder->get_polygon();
+ else
+ return Variant(Vector<Vector2>());
+}
- if (i == poly.size() - 1 && (!node->get_occluder_polygon()->is_closed() || wip_active)) {
+void LightOccluder2DEditor::_set_polygon(int p_idx, const Variant &p_polygon) const {
- } else {
- p_overlay->draw_line(point, next_point, col, 2);
- }
- p_overlay->draw_texture(handle, point - handle->get_size() * 0.5);
- }
+ Ref<OccluderPolygon2D> occluder = _ensure_occluder();
+ occluder->set_polygon(p_polygon);
}
-void LightOccluder2DEditor::edit(Node *p_collision_polygon) {
+void LightOccluder2DEditor::_action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon) {
- if (!canvas_item_editor) {
- canvas_item_editor = CanvasItemEditor::get_singleton();
- }
+ Ref<OccluderPolygon2D> occluder = _ensure_occluder();
+ undo_redo->add_do_method(occluder.ptr(), "set_polygon", p_polygon);
+ undo_redo->add_undo_method(occluder.ptr(), "set_polygon", p_previous);
+}
- if (p_collision_polygon) {
+bool LightOccluder2DEditor::_has_resource() const {
- node = Object::cast_to<LightOccluder2D>(p_collision_polygon);
- wip.clear();
- wip_active = false;
- edited_point = -1;
- canvas_item_editor->update_viewport();
- } else {
- node = NULL;
- }
+ return node && node->get_occluder_polygon().is_valid();
}
-void LightOccluder2DEditor::_create_poly() {
+void LightOccluder2DEditor::_create_resource() {
if (!node)
return;
+
undo_redo->create_action(TTR("Create Occluder Polygon"));
undo_redo->add_do_method(node, "set_occluder_polygon", Ref<OccluderPolygon2D>(memnew(OccluderPolygon2D)));
undo_redo->add_undo_method(node, "set_occluder_polygon", Variant(REF()));
undo_redo->commit_action();
-}
-
-void LightOccluder2DEditor::_bind_methods() {
- ClassDB::bind_method(D_METHOD("_menu_option"), &LightOccluder2DEditor::_menu_option);
- ClassDB::bind_method(D_METHOD("_node_removed"), &LightOccluder2DEditor::_node_removed);
- ClassDB::bind_method(D_METHOD("_create_poly"), &LightOccluder2DEditor::_create_poly);
+ _menu_option(MODE_CREATE);
}
-LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) {
+LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) :
+ AbstractPolygon2DEditor(p_editor) {
node = NULL;
- canvas_item_editor = NULL;
- editor = p_editor;
- undo_redo = editor->get_undo_redo();
-
- add_child(memnew(VSeparator));
- button_create = memnew(ToolButton);
- add_child(button_create);
- button_create->connect("pressed", this, "_menu_option", varray(MODE_CREATE));
- button_create->set_toggle_mode(true);
- button_create->set_tooltip(TTR("Create a new polygon from scratch."));
-
- button_edit = memnew(ToolButton);
- add_child(button_edit);
- button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT));
- button_edit->set_toggle_mode(true);
- button_edit->set_tooltip(TTR("Edit existing polygon:") + "\n" + TTR("LMB: Move Point.") + "\n" + TTR("Ctrl+LMB: Split Segment.") + "\n" + TTR("RMB: Erase Point."));
-
- create_poly = memnew(ConfirmationDialog);
- add_child(create_poly);
- create_poly->get_ok()->set_text(TTR("Create"));
-
- mode = MODE_EDIT;
- wip_active = false;
-}
-
-void LightOccluder2DEditorPlugin::edit(Object *p_object) {
-
- light_occluder_editor->edit(Object::cast_to<Node>(p_object));
-}
-
-bool LightOccluder2DEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("LightOccluder2D");
-}
-
-void LightOccluder2DEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- light_occluder_editor->show();
- } else {
-
- light_occluder_editor->hide();
- light_occluder_editor->edit(NULL);
- }
-}
-
-LightOccluder2DEditorPlugin::LightOccluder2DEditorPlugin(EditorNode *p_node) {
-
- editor = p_node;
- light_occluder_editor = memnew(LightOccluder2DEditor(p_node));
- CanvasItemEditor::get_singleton()->add_control_to_menu_panel(light_occluder_editor);
-
- light_occluder_editor->hide();
}
-LightOccluder2DEditorPlugin::~LightOccluder2DEditorPlugin() {
+LightOccluder2DEditorPlugin::LightOccluder2DEditorPlugin(EditorNode *p_node) :
+ AbstractPolygon2DEditorPlugin(p_node, memnew(LightOccluder2DEditor(p_node)), "LightOccluder2D") {
}
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h
index a1962892ee..6117d50e89 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.h
+++ b/editor/plugins/light_occluder_2d_editor_plugin.h
@@ -31,83 +31,44 @@
#ifndef LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H
#define LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
+#include "editor/plugins/abstract_polygon_2d_editor.h"
#include "scene/2d/light_occluder_2d.h"
-#include "scene/gui/tool_button.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
-class CanvasItemEditor;
+class LightOccluder2DEditor : public AbstractPolygon2DEditor {
-class LightOccluder2DEditor : public HBoxContainer {
+ GDCLASS(LightOccluder2DEditor, AbstractPolygon2DEditor);
- GDCLASS(LightOccluder2DEditor, HBoxContainer);
-
- UndoRedo *undo_redo;
- enum Mode {
-
- MODE_CREATE,
- MODE_EDIT,
-
- };
-
- Mode mode;
-
- ToolButton *button_create;
- ToolButton *button_edit;
-
- CanvasItemEditor *canvas_item_editor;
- EditorNode *editor;
- Panel *panel;
LightOccluder2D *node;
- MenuButton *options;
- int edited_point;
- Vector2 edited_point_pos;
- Vector<Vector2> pre_move_edit;
- Vector<Vector2> wip;
- bool wip_active;
+ Ref<OccluderPolygon2D> _ensure_occluder() const;
- ConfirmationDialog *create_poly;
+protected:
+ virtual Node2D *_get_node() const;
+ virtual void _set_node(Node *p_polygon);
- void _wip_close(bool p_closed);
- void _menu_option(int p_option);
- void _create_poly();
+ virtual bool _is_line() const;
+ virtual int _get_polygon_count() const;
+ virtual Variant _get_polygon(int p_idx) const;
+ virtual void _set_polygon(int p_idx, const Variant &p_polygon) const;
-protected:
- void _notification(int p_what);
- void _node_removed(Node *p_node);
- static void _bind_methods();
+ virtual void _action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon);
+
+ virtual bool _has_resource() const;
+ virtual void _create_resource();
public:
- Vector2 snap_point(const Vector2 &p_point) const;
- void forward_canvas_draw_over_viewport(Control *p_overlay);
- bool forward_gui_input(const Ref<InputEvent> &p_event);
- void edit(Node *p_collision_polygon);
LightOccluder2DEditor(EditorNode *p_editor);
};
-class LightOccluder2DEditorPlugin : public EditorPlugin {
+class LightOccluder2DEditorPlugin : public AbstractPolygon2DEditorPlugin {
- GDCLASS(LightOccluder2DEditorPlugin, EditorPlugin);
-
- LightOccluder2DEditor *light_occluder_editor;
- EditorNode *editor;
+ GDCLASS(LightOccluder2DEditorPlugin, AbstractPolygon2DEditorPlugin);
public:
- virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return light_occluder_editor->forward_gui_input(p_event); }
- virtual void forward_canvas_draw_over_viewport(Control *p_overlay) { return light_occluder_editor->forward_canvas_draw_over_viewport(p_overlay); }
-
- virtual String get_name() const { return "LightOccluder2D"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_object);
- virtual bool handles(Object *p_object) const;
- virtual void make_visible(bool p_visible);
-
LightOccluder2DEditorPlugin(EditorNode *p_node);
- ~LightOccluder2DEditorPlugin();
};
#endif // LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp
index c67c96798a..3d4816b17b 100644
--- a/editor/plugins/path_2d_editor_plugin.cpp
+++ b/editor/plugins/path_2d_editor_plugin.cpp
@@ -70,8 +70,9 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (!node->get_curve().is_valid())
return false;
- Ref<InputEventMouseButton> mb = p_event;
+ real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
+ Ref<InputEventMouseButton> mb = p_event;
if (mb.is_valid()) {
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
@@ -79,8 +80,6 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
Vector2 gpoint = mb->get_position();
Vector2 cpoint = node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mb->get_position())));
- real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
-
if (mb->is_pressed() && action == ACTION_NONE) {
Ref<Curve2D> curve = node->get_curve();
@@ -179,6 +178,41 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return true;
}
+ // Check for segment split.
+ if (mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT && mode == MODE_EDIT && on_edge == true) {
+ Vector2 gpoint = mb->get_position();
+ Ref<Curve2D> curve = node->get_curve();
+
+ int insertion_point = -1;
+ float mbLength = curve->get_closest_offset(xform.affine_inverse().xform(gpoint));
+ int len = curve->get_point_count();
+ for (int i = 0; i < len - 1; i++) {
+ float compareLength = curve->get_closest_offset(curve->get_point_position(i + 1));
+ if (mbLength >= curve->get_closest_offset(curve->get_point_position(i)) && mbLength <= compareLength)
+ insertion_point = i;
+ }
+ if (insertion_point == -1)
+ insertion_point = curve->get_point_count() - 2;
+
+ undo_redo->create_action(TTR("Split Curve"));
+ undo_redo->add_do_method(curve.ptr(), "add_point", xform.affine_inverse().xform(gpoint), Vector2(0, 0), Vector2(0, 0), insertion_point + 1);
+ undo_redo->add_undo_method(curve.ptr(), "remove_point", insertion_point + 1);
+ undo_redo->add_do_method(canvas_item_editor, "update_viewport");
+ undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
+ undo_redo->commit_action();
+
+ action = ACTION_MOVING_POINT;
+ action_point = insertion_point + 1;
+ moving_from = curve->get_point_position(action_point);
+ moving_screen_from = gpoint;
+
+ canvas_item_editor->update_viewport();
+
+ on_edge = false;
+
+ return true;
+ }
+
// Check for point movement completion.
if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT && action != ACTION_NONE) {
@@ -245,6 +279,49 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (mm.is_valid()) {
+ if (action == ACTION_NONE && mode == MODE_EDIT) {
+ // Handle Edge Follow
+ bool old_edge = on_edge;
+
+ Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
+ Vector2 gpoint = mm->get_position();
+
+ Ref<Curve2D> curve = node->get_curve();
+ if (curve == NULL) return true;
+ if (curve->get_point_count() < 2) return true;
+
+ // Find edge
+ edge_point = xform.xform(curve->get_closest_point(xform.affine_inverse().xform(mm->get_position())));
+ on_edge = false;
+ if (edge_point.distance_to(gpoint) <= grab_threshold) {
+ on_edge = true;
+ }
+ // However, if near a control point or its in-out handles then not on edge
+ int len = curve->get_point_count();
+ for (int i = 0; i < len; i++) {
+ Vector2 pp = curve->get_point_position(i);
+ Vector2 p = xform.xform(pp);
+ if (p.distance_to(gpoint) <= grab_threshold) {
+ on_edge = false;
+ break;
+ }
+ p = xform.xform(pp + curve->get_point_in(i));
+ if (p.distance_to(gpoint) <= grab_threshold) {
+ on_edge = false;
+ break;
+ }
+ p = xform.xform(pp + curve->get_point_out(i));
+ if (p.distance_to(gpoint) <= grab_threshold) {
+ on_edge = false;
+ break;
+ }
+ }
+ if (on_edge || old_edge != on_edge) {
+ canvas_item_editor->update_viewport();
+ return true;
+ }
+ }
+
if (action != ACTION_NONE) {
// Handle point/control movement.
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
@@ -309,7 +386,6 @@ void Path2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
Control *vpc = canvas_item_editor->get_viewport_control();
for (int i = 0; i < len; i++) {
-
Vector2 point = xform.xform(curve->get_point_position(i));
vpc->draw_texture_rect(handle, Rect2(point - handle_size * 0.5, handle_size), false, Color(1, 1, 1, 1));
@@ -325,6 +401,11 @@ void Path2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
vpc->draw_texture_rect(handle, Rect2(pointin - handle_size * 0.5, handle_size), false, Color(1, 0.5, 1, 0.3));
}
}
+
+ if (on_edge) {
+ Ref<Texture> add_handle = get_icon("EditorHandleAdd", "EditorIcons");
+ p_overlay->draw_texture(add_handle, edge_point - add_handle->get_size() * 0.5);
+ }
}
void Path2DEditor::_node_visibility_changed() {
@@ -442,6 +523,7 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) {
undo_redo = editor->get_undo_redo();
mirror_handle_angle = true;
mirror_handle_length = true;
+ on_edge = false;
mode = MODE_EDIT;
action = ACTION_NONE;
@@ -455,7 +537,7 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) {
curve_edit->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveEdit", "EditorIcons"));
curve_edit->set_toggle_mode(true);
curve_edit->set_focus_mode(Control::FOCUS_NONE);
- curve_edit->set_tooltip(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string(KEY_MASK_CMD) + TTR("Click: Add Point") + "\n" + TTR("Right Click: Delete Point"));
+ curve_edit->set_tooltip(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string(KEY_MASK_CMD) + TTR("Click: Add Point") + "\n" + TTR("Left Click: Split Segment (in curve)") + "\n" + TTR("Right Click: Delete Point"));
curve_edit->connect("pressed", this, "_mode_selected", varray(MODE_EDIT));
base_hb->add_child(curve_edit);
curve_edit_curve = memnew(ToolButton);
@@ -469,7 +551,7 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) {
curve_create->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveCreate", "EditorIcons"));
curve_create->set_toggle_mode(true);
curve_create->set_focus_mode(Control::FOCUS_NONE);
- curve_create->set_tooltip(TTR("Add Point (in empty space)") + "\n" + TTR("Split Segment (in curve)"));
+ curve_create->set_tooltip(TTR("Add Point (in empty space)"));
curve_create->connect("pressed", this, "_mode_selected", varray(MODE_CREATE));
base_hb->add_child(curve_create);
curve_del = memnew(ToolButton);
diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h
index 3a78657746..34952b473a 100644
--- a/editor/plugins/path_2d_editor_plugin.h
+++ b/editor/plugins/path_2d_editor_plugin.h
@@ -73,6 +73,7 @@ class Path2DEditor : public HBoxContainer {
bool mirror_handle_angle;
bool mirror_handle_length;
+ bool on_edge;
enum HandleOption {
HANDLE_OPTION_ANGLE,
@@ -93,6 +94,7 @@ class Path2DEditor : public HBoxContainer {
Point2 moving_screen_from;
float orig_in_length;
float orig_out_length;
+ Vector2 edge_point;
void _mode_selected(int p_mode);
void _handle_option_pressed(int p_option);
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp
index 45268d8c8d..97448f3f88 100644
--- a/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -56,6 +56,12 @@ void Polygon2DEditor::_notification(int p_what) {
switch (p_what) {
+ case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_THEME_CHANGED: {
+
+ uv_edit_draw->add_style_override("panel", get_stylebox("bg", "Tree"));
+ bone_scroll->add_style_override("bg", get_stylebox("bg", "Tree"));
+ } break;
case NOTIFICATION_READY: {
button_uv->set_icon(get_icon("Uv", "EditorIcons"));
@@ -73,66 +79,68 @@ void Polygon2DEditor::_notification(int p_what) {
b_snap_grid->set_icon(get_icon("Grid", "EditorIcons"));
b_snap_enable->set_icon(get_icon("SnapGrid", "EditorIcons"));
uv_icon_zoom->set_texture(get_icon("Zoom", "EditorIcons"));
-
} break;
- case NOTIFICATION_PHYSICS_PROCESS: {
+ case NOTIFICATION_VISIBILITY_CHANGED: {
+ if (!is_visible()) {
+ uv_edit->hide();
+ }
} break;
}
}
void Polygon2DEditor::_sync_bones() {
+ Skeleton2D *skeleton;
if (!node->has_node(node->get_skeleton())) {
error->set_text(TTR("The skeleton property of the Polygon2D does not point to a Skeleton2D node"));
error->popup_centered_minsize();
- return;
+ } else {
+ Node *sn = node->get_node(node->get_skeleton());
+ skeleton = Object::cast_to<Skeleton2D>(sn);
}
- Node *sn = node->get_node(node->get_skeleton());
- Skeleton2D *skeleton = Object::cast_to<Skeleton2D>(sn);
+ Array prev_bones = node->call("_get_bones");
+ node->clear_bones();
if (!skeleton) {
error->set_text(TTR("The skeleton property of the Polygon2D does not point to a Skeleton2D node"));
error->popup_centered_minsize();
- return;
- }
-
- Array prev_bones = node->call("_get_bones");
- node->clear_bones();
-
- for (int i = 0; i < skeleton->get_bone_count(); i++) {
- NodePath path = skeleton->get_path_to(skeleton->get_bone(i));
- PoolVector<float> weights;
- int wc = node->get_polygon().size();
-
- for (int j = 0; j < prev_bones.size(); j += 2) {
- NodePath pvp = prev_bones[j];
- PoolVector<float> pv = prev_bones[j + 1];
- if (pvp == path && pv.size() == wc) {
- weights = pv;
+ } else {
+ for (int i = 0; i < skeleton->get_bone_count(); i++) {
+ NodePath path = skeleton->get_path_to(skeleton->get_bone(i));
+ PoolVector<float> weights;
+ int wc = node->get_polygon().size();
+
+ for (int j = 0; j < prev_bones.size(); j += 2) {
+ NodePath pvp = prev_bones[j];
+ PoolVector<float> pv = prev_bones[j + 1];
+ if (pvp == path && pv.size() == wc) {
+ weights = pv;
+ }
}
- }
- if (weights.size() == 0) { //create them
- weights.resize(node->get_polygon().size());
- PoolVector<float>::Write w = weights.write();
- for (int j = 0; j < wc; j++) {
- w[j] = 0.0;
+ if (weights.size() == 0) { //create them
+ weights.resize(node->get_polygon().size());
+ PoolVector<float>::Write w = weights.write();
+ for (int j = 0; j < wc; j++) {
+ w[j] = 0.0;
+ }
}
- }
- node->add_bone(path, weights);
+ node->add_bone(path, weights);
+ }
}
+
Array new_bones = node->call("_get_bones");
- undo_redo->create_action(TTR("Sync bones"));
+ undo_redo->create_action(TTR("Sync Bones"));
undo_redo->add_do_method(node, "_set_bones", new_bones);
undo_redo->add_undo_method(node, "_set_bones", prev_bones);
- undo_redo->add_do_method(uv_edit_draw, "update");
- undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->add_do_method(this, "_update_bone_list");
undo_redo->add_undo_method(this, "_update_bone_list");
+ undo_redo->add_do_method(uv_edit_draw, "update");
+ undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
}
@@ -162,9 +170,10 @@ void Polygon2DEditor::_update_bone_list() {
cb->set_text(name);
cb->set_button_group(bg);
cb->set_meta("bone_path", np);
+ cb->set_focus_mode(FOCUS_NONE);
bone_scroll_vb->add_child(cb);
- if (np == selected)
+ if (np == selected || bone_scroll_vb->get_child_count() < 2)
cb->set_pressed(true);
cb->connect("pressed", this, "_bone_paint_selected", varray(i));
@@ -180,6 +189,7 @@ void Polygon2DEditor::_bone_paint_selected(int p_index) {
void Polygon2DEditor::_uv_edit_mode_select(int p_mode) {
if (p_mode == 0) { //uv
+
uv_button[UV_MODE_CREATE]->hide();
for (int i = UV_MODE_MOVE; i <= UV_MODE_SCALE; i++) {
uv_button[i]->show();
@@ -194,8 +204,8 @@ void Polygon2DEditor::_uv_edit_mode_select(int p_mode) {
bone_paint_strength->hide();
bone_paint_radius->hide();
bone_paint_radius_label->hide();
-
} else if (p_mode == 1) { //poly
+
for (int i = 0; i <= UV_MODE_SCALE; i++) {
uv_button[i]->show();
}
@@ -209,8 +219,8 @@ void Polygon2DEditor::_uv_edit_mode_select(int p_mode) {
bone_paint_strength->hide();
bone_paint_radius->hide();
bone_paint_radius_label->hide();
-
} else if (p_mode == 2) { //splits
+
for (int i = 0; i <= UV_MODE_SCALE; i++) {
uv_button[i]->hide();
}
@@ -224,8 +234,8 @@ void Polygon2DEditor::_uv_edit_mode_select(int p_mode) {
bone_paint_strength->hide();
bone_paint_radius->hide();
bone_paint_radius_label->hide();
-
} else if (p_mode == 3) { //bones´
+
for (int i = 0; i <= UV_MODE_REMOVE_SPLIT; i++) {
uv_button[i]->hide();
}
@@ -241,9 +251,17 @@ void Polygon2DEditor::_uv_edit_mode_select(int p_mode) {
bone_paint_pos = Vector2(-100000, -100000); //send brush away when switching
}
+ uv_edit->set_size(uv_edit->get_size()); // Necessary readjustment of the popup window.
uv_edit_draw->update();
}
+void Polygon2DEditor::_uv_edit_popup_hide() {
+
+ EditorSettings::get_singleton()->set("interface/dialogs/uv_editor_bounds", uv_edit->get_rect());
+
+ _cancel_editing();
+}
+
void Polygon2DEditor::_menu_option(int p_option) {
switch (p_option) {
@@ -252,7 +270,7 @@ void Polygon2DEditor::_menu_option(int p_option) {
if (node->get_texture().is_null()) {
- error->set_text("No texture in this polygon.\nSet a texture to be able to edit UV.");
+ error->set_text(TTR("No texture in this polygon.\nSet a texture to be able to edit UV."));
error->popup_centered_minsize();
return;
}
@@ -268,7 +286,10 @@ void Polygon2DEditor::_menu_option(int p_option) {
undo_redo->commit_action();
}
- uv_edit->popup_centered_ratio(0.85);
+ if (EditorSettings::get_singleton()->has_setting("interface/dialogs/uv_editor_bounds"))
+ uv_edit->popup(EditorSettings::get_singleton()->get("interface/dialogs/uv_editor_bounds"));
+ else
+ uv_edit->popup_centered_ratio(0.85);
} break;
case UVEDIT_POLYGON_TO_UV: {
@@ -282,7 +303,6 @@ void Polygon2DEditor::_menu_option(int p_option) {
undo_redo->add_do_method(uv_edit_draw, "update");
undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
-
} break;
case UVEDIT_UV_TO_POLYGON: {
@@ -291,13 +311,12 @@ void Polygon2DEditor::_menu_option(int p_option) {
if (uvs.size() == 0)
break;
- undo_redo->create_action(TTR("Create UV Map"));
+ undo_redo->create_action(TTR("Create Polygon"));
undo_redo->add_do_method(node, "set_polygon", uvs);
undo_redo->add_undo_method(node, "set_polygon", points);
undo_redo->add_do_method(uv_edit_draw, "update");
undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
-
} break;
case UVEDIT_UV_CLEAR: {
@@ -310,43 +329,81 @@ void Polygon2DEditor::_menu_option(int p_option) {
undo_redo->add_do_method(uv_edit_draw, "update");
undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
-
} break;
case UVEDIT_GRID_SETTINGS: {
+
grid_settings->popup_centered_minsize();
} break;
default: {
+
AbstractPolygon2DEditor::_menu_option(p_option);
} break;
}
}
+void Polygon2DEditor::_cancel_editing() {
+
+ if (uv_create) {
+ uv_drag = false;
+ uv_create = false;
+ node->set_uv(uv_create_uv_prev);
+ node->set_polygon(uv_create_poly_prev);
+ node->call("_set_bones", uv_create_bones_prev);
+ node->set_splits(splits_prev);
+ } else if (uv_drag) {
+ uv_drag = false;
+ if (uv_edit_mode[0]->is_pressed()) { // Edit UV.
+ node->set_uv(points_prev);
+ } else if (uv_edit_mode[1]->is_pressed()) { // Edit polygon.
+ node->set_polygon(points_prev);
+ }
+ } else if (split_create) {
+ split_create = false;
+ }
+}
+
+void Polygon2DEditor::_commit_action() {
+
+ // Makes that undo/redoing actions made outside of the UV editor still affects its polygon.
+ undo_redo->add_do_method(uv_edit_draw, "update");
+ undo_redo->add_undo_method(uv_edit_draw, "update");
+ undo_redo->add_do_method(CanvasItemEditor::get_singleton(), "update_viewport");
+ undo_redo->add_undo_method(CanvasItemEditor::get_singleton(), "update_viewport");
+ undo_redo->commit_action();
+}
+
void Polygon2DEditor::_set_use_snap(bool p_use) {
use_snap = p_use;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_enabled", p_use);
}
void Polygon2DEditor::_set_show_grid(bool p_show) {
snap_show_grid = p_show;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "show_grid", p_show);
uv_edit_draw->update();
}
void Polygon2DEditor::_set_snap_off_x(float p_val) {
snap_offset.x = p_val;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_offset", snap_offset);
uv_edit_draw->update();
}
void Polygon2DEditor::_set_snap_off_y(float p_val) {
snap_offset.y = p_val;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_offset", snap_offset);
uv_edit_draw->update();
}
void Polygon2DEditor::_set_snap_step_x(float p_val) {
snap_step.x = p_val;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_step", snap_step);
uv_edit_draw->update();
}
void Polygon2DEditor::_set_snap_step_y(float p_val) {
snap_step.y = p_val;
+ EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_step", snap_step);
uv_edit_draw->update();
}
@@ -364,6 +421,9 @@ void Polygon2DEditor::_uv_mode(int p_mode) {
void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
+ if (!_get_node())
+ return;
+
Transform2D mtx;
mtx.elements[2] = -uv_draw_ofs;
mtx.scale_basis(Vector2(uv_draw_zoom, uv_draw_zoom));
@@ -376,7 +436,7 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
if (mb->is_pressed()) {
- uv_drag_from = Vector2(mb->get_position().x, mb->get_position().y);
+ uv_drag_from = snap_point(Vector2(mb->get_position().x, mb->get_position().y));
uv_drag = true;
points_prev = node->get_uv();
@@ -390,8 +450,9 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
if (uv_move_current == UV_MODE_CREATE) {
if (!uv_create) {
+
points_prev.resize(0);
- Vector2 tuv = mtx.affine_inverse().xform(Vector2(mb->get_position().x, mb->get_position().y));
+ Vector2 tuv = mtx.affine_inverse().xform(snap_point(Vector2(mb->get_position().x, mb->get_position().y)));
points_prev.push_back(tuv);
uv_create_to = tuv;
point_drag_index = 0;
@@ -405,23 +466,27 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
node->set_polygon(points_prev);
node->set_uv(points_prev);
+ uv_edit_draw->update();
} else {
- Vector2 tuv = mtx.affine_inverse().xform(Vector2(mb->get_position().x, mb->get_position().y));
- if (points_prev.size() > 3 && tuv.distance_to(points_prev[0]) < 8) {
+ Vector2 tuv = mtx.affine_inverse().xform(snap_point(Vector2(mb->get_position().x, mb->get_position().y)));
+
+ if (points_prev.size() > 2 && tuv.distance_to(points_prev[0]) < 8) {
undo_redo->create_action(TTR("Create Polygon & UV"));
undo_redo->add_do_method(node, "set_uv", node->get_uv());
- undo_redo->add_undo_method(node, "set_uv", points_prev);
+ undo_redo->add_undo_method(node, "set_uv", uv_create_uv_prev);
undo_redo->add_do_method(node, "set_polygon", node->get_polygon());
- undo_redo->add_undo_method(node, "set_polygon", points_prev);
+ undo_redo->add_undo_method(node, "set_polygon", uv_create_poly_prev);
undo_redo->add_do_method(node, "clear_bones");
- undo_redo->add_undo_method(node, "_set_bones", node->call("_get_bones"));
+ undo_redo->add_undo_method(node, "_set_bones", uv_create_bones_prev);
undo_redo->add_do_method(uv_edit_draw, "update");
undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
uv_drag = false;
uv_create = false;
+
_uv_mode(UV_MODE_EDIT_POINT);
+ _menu_option(MODE_EDIT);
} else {
points_prev.push_back(tuv);
point_drag_index = points_prev.size() - 1;
@@ -430,6 +495,8 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
node->set_polygon(points_prev);
node->set_uv(points_prev);
}
+
+ CanvasItemEditor::get_singleton()->update_viewport();
}
if (uv_move_current == UV_MODE_EDIT_POINT) {
@@ -540,7 +607,6 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
splits_prev.push_back(split_to_index);
undo_redo->create_action(TTR("Add Split"));
-
undo_redo->add_do_method(node, "set_splits", splits_prev);
undo_redo->add_undo_method(node, "set_splits", node->get_splits());
undo_redo->add_do_method(uv_edit_draw, "update");
@@ -575,13 +641,11 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
splits_prev.remove(i);
undo_redo->create_action(TTR("Remove Split"));
-
undo_redo->add_do_method(node, "set_splits", splits_prev);
undo_redo->add_undo_method(node, "set_splits", node->get_splits());
undo_redo->add_do_method(uv_edit_draw, "update");
undo_redo->add_undo_method(uv_edit_draw, "update");
undo_redo->commit_action();
-
break;
}
}
@@ -608,12 +672,12 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
} else if (uv_drag && !uv_create) {
- undo_redo->create_action(TTR("Transform UV Map"));
-
if (uv_edit_mode[0]->is_pressed()) { //edit uv
+ undo_redo->create_action(TTR("Transform UV Map"));
undo_redo->add_do_method(node, "set_uv", node->get_uv());
undo_redo->add_undo_method(node, "set_uv", points_prev);
} else if (uv_edit_mode[1]->is_pressed()) { //edit polygon
+ undo_redo->create_action(TTR("Transform Polygon"));
undo_redo->add_do_method(node, "set_polygon", node->get_polygon());
undo_redo->add_undo_method(node, "set_polygon", points_prev);
}
@@ -624,7 +688,7 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
uv_drag = false;
} else if (bone_painting) {
- undo_redo->create_action(TTR("Paint bone weights"));
+ undo_redo->create_action(TTR("Paint Bone Weights"));
undo_redo->add_do_method(node, "set_bone_weights", bone_painting_bone, node->get_bone_weights(bone_painting_bone));
undo_redo->add_undo_method(node, "set_bone_weights", bone_painting_bone, prev_weights);
undo_redo->add_do_method(uv_edit_draw, "update");
@@ -635,30 +699,12 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
} else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) {
- if (uv_create) {
-
- uv_drag = false;
- uv_create = false;
- node->set_uv(uv_create_uv_prev);
- node->set_polygon(uv_create_poly_prev);
- node->call("_set_bones", uv_create_bones_prev);
- node->set_splits(splits_prev);
- uv_edit_draw->update();
- } else if (uv_drag) {
+ _cancel_editing();
- uv_drag = false;
- if (uv_edit_mode[0]->is_pressed()) { //edit uv
- node->set_uv(points_prev);
- } else if (uv_edit_mode[1]->is_pressed()) { //edit polygon
- node->set_polygon(points_prev);
- }
- uv_edit_draw->update();
- } else if (split_create) {
- split_create = false;
- uv_edit_draw->update();
- } else if (bone_painting) {
+ if (bone_painting)
node->set_bone_weights(bone_painting_bone, prev_weights);
- }
+
+ uv_edit_draw->update();
} else if (mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed()) {
@@ -682,13 +728,15 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
} else if (uv_drag) {
Vector2 uv_drag_to = mm->get_position();
+ uv_drag_to = snap_point(uv_drag_to); // FIXME: Only works correctly with 'UV_MODE_EDIT_POINT', it's imprecise with the rest.
Vector2 drag = mtx.affine_inverse().xform(uv_drag_to) - mtx.affine_inverse().xform(uv_drag_from);
switch (uv_move_current) {
case UV_MODE_CREATE: {
+
if (uv_create) {
- uv_create_to = mtx.affine_inverse().xform(Vector2(mm->get_position().x, mm->get_position().y));
+ uv_create_to = mtx.affine_inverse().xform(snap_point(Vector2(mm->get_position().x, mm->get_position().y)));
}
} break;
case UV_MODE_EDIT_POINT: {
@@ -713,7 +761,6 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
} else if (uv_edit_mode[1]->is_pressed()) { //edit polygon
node->set_polygon(uv_new);
}
-
} break;
case UV_MODE_ROTATE: {
@@ -737,7 +784,6 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
} else if (uv_edit_mode[1]->is_pressed()) { //edit polygon
node->set_polygon(uv_new);
}
-
} break;
case UV_MODE_SCALE: {
@@ -767,11 +813,15 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
node->set_polygon(uv_new);
}
} break;
+ case UV_MODE_PAINT_WEIGHT:
+ case UV_MODE_CLEAR_WEIGHT: {
+
+ bone_paint_pos = Vector2(mm->get_position().x, mm->get_position().y);
+ } break;
default: {}
}
if (bone_painting) {
- bone_paint_pos = Vector2(mm->get_position().x, mm->get_position().y);
PoolVector<float> painted_weights = node->get_bone_weights(bone_painting_bone);
{
@@ -796,7 +846,9 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
node->set_bone_weights(bone_painting_bone, painted_weights);
}
+
uv_edit_draw->update();
+ CanvasItemEditor::get_singleton()->update_viewport();
} else if (split_create) {
uv_create_to = mtx.affine_inverse().xform(Vector2(mm->get_position().x, mm->get_position().y));
uv_edit_draw->update();
@@ -833,6 +885,9 @@ void Polygon2DEditor::_uv_scroll_changed(float) {
void Polygon2DEditor::_uv_draw() {
+ if (!uv_edit->is_visible() || !_get_node())
+ return;
+
Ref<Texture> base_tex = node->get_texture();
if (base_tex.is_null())
return;
@@ -848,6 +903,7 @@ void Polygon2DEditor::_uv_draw() {
VS::get_singleton()->canvas_item_add_set_transform(uv_edit_draw->get_canvas_item(), Transform2D());
if (snap_show_grid) {
+ Color grid_color = Color(1.0, 1.0, 1.0, 0.15);
Size2 s = uv_edit_draw->get_size();
int last_cell = 0;
@@ -857,7 +913,7 @@ void Polygon2DEditor::_uv_draw() {
if (i == 0)
last_cell = cell;
if (last_cell != cell)
- uv_edit_draw->draw_line(Point2(i, 0), Point2(i, s.height), Color(0.3, 0.7, 1, 0.3));
+ uv_edit_draw->draw_line(Point2(i, 0), Point2(i, s.height), grid_color);
last_cell = cell;
}
}
@@ -868,7 +924,7 @@ void Polygon2DEditor::_uv_draw() {
if (i == 0)
last_cell = cell;
if (last_cell != cell)
- uv_edit_draw->draw_line(Point2(0, i), Point2(s.width, i), Color(0.3, 0.7, 1, 0.3));
+ uv_edit_draw->draw_line(Point2(0, i), Point2(s.width, i), grid_color);
last_cell = cell;
}
}
@@ -901,19 +957,26 @@ void Polygon2DEditor::_uv_draw() {
Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons");
+ Color poly_line_color = Color(0.9, 0.5, 0.5);
+ Color prev_color = Color(0.5, 0.5, 0.5);
Rect2 rect(Point2(), mtx.basis_xform(base_tex->get_size()));
rect.expand_to(mtx.basis_xform(uv_edit_draw->get_size()));
for (int i = 0; i < uvs.size(); i++) {
int next = (i + 1) % uvs.size();
+
+ if (uv_drag && uv_move_current == UV_MODE_EDIT_POINT && EDITOR_DEF("editors/poly_editor/show_previous_outline", true)) {
+ uv_edit_draw->draw_line(mtx.xform(points_prev[i]), mtx.xform(points_prev[next]), prev_color, 2 * EDSCALE);
+ }
+
Vector2 next_point = uvs[next];
if (uv_create && i == uvs.size() - 1) {
next_point = uv_create_to;
}
- uv_edit_draw->draw_line(mtx.xform(uvs[i]), mtx.xform(next_point), Color(0.9, 0.5, 0.5), 2);
- if (weight_r.ptr()) {
+ uv_edit_draw->draw_line(mtx.xform(uvs[i]), mtx.xform(next_point), poly_line_color, 2 * EDSCALE);
+ if (weight_r.ptr()) {
Vector2 draw_pos = mtx.xform(uvs[i]);
float weight = weight_r[i];
uv_edit_draw->draw_rect(Rect2(draw_pos - Vector2(2, 2) * EDSCALE, Vector2(5, 5) * EDSCALE), Color(weight, weight, weight, 1.0));
@@ -926,7 +989,7 @@ void Polygon2DEditor::_uv_draw() {
if (split_create) {
Vector2 from = uvs[point_drag_index];
Vector2 to = uv_create_to;
- uv_edit_draw->draw_line(mtx.xform(from), mtx.xform(to), Color(0.9, 0.5, 0.5), 2);
+ uv_edit_draw->draw_line(mtx.xform(from), mtx.xform(to), poly_line_color, 2);
}
PoolVector<int> splits = node->get_splits();
@@ -936,7 +999,7 @@ void Polygon2DEditor::_uv_draw() {
int idx_to = splits[i + 1];
if (idx_from < 0 || idx_to >= uvs.size())
continue;
- uv_edit_draw->draw_line(mtx.xform(uvs[idx_from]), mtx.xform(uvs[idx_to]), Color(0.9, 0.5, 0.5), 2);
+ uv_edit_draw->draw_line(mtx.xform(uvs[idx_from]), mtx.xform(uvs[idx_to]), poly_line_color, 2);
}
if (uv_mode == UV_MODE_PAINT_WEIGHT || uv_mode == UV_MODE_CLEAR_WEIGHT) {
@@ -1002,15 +1065,23 @@ void Polygon2DEditor::_uv_draw() {
updating_uv_scroll = true;
uv_hscroll->set_min(rect.position.x);
uv_hscroll->set_max(rect.position.x + rect.size.x);
- uv_hscroll->set_page(uv_edit_draw->get_size().x);
- uv_hscroll->set_value(uv_draw_ofs.x);
- uv_hscroll->set_step(0.001);
+ if (ABS(rect.position.x - (rect.position.x + rect.size.x)) <= uv_edit_draw->get_size().x) {
+ uv_hscroll->hide();
+ } else {
+ uv_hscroll->show();
+ uv_hscroll->set_page(uv_edit_draw->get_size().x);
+ uv_hscroll->set_value(uv_draw_ofs.x);
+ }
uv_vscroll->set_min(rect.position.y);
uv_vscroll->set_max(rect.position.y + rect.size.y);
- uv_vscroll->set_page(uv_edit_draw->get_size().y);
- uv_vscroll->set_value(uv_draw_ofs.y);
- uv_vscroll->set_step(0.001);
+ if (ABS(rect.position.y - (rect.position.y + rect.size.y)) <= uv_edit_draw->get_size().y) {
+ uv_vscroll->hide();
+ } else {
+ uv_vscroll->show();
+ uv_vscroll->set_page(uv_edit_draw->get_size().y);
+ uv_vscroll->set_value(uv_draw_ofs.y);
+ }
updating_uv_scroll = false;
}
@@ -1027,9 +1098,9 @@ void Polygon2DEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_snap_step_x"), &Polygon2DEditor::_set_snap_step_x);
ClassDB::bind_method(D_METHOD("_set_snap_step_y"), &Polygon2DEditor::_set_snap_step_y);
ClassDB::bind_method(D_METHOD("_uv_edit_mode_select"), &Polygon2DEditor::_uv_edit_mode_select);
+ ClassDB::bind_method(D_METHOD("_uv_edit_popup_hide"), &Polygon2DEditor::_uv_edit_popup_hide);
ClassDB::bind_method(D_METHOD("_sync_bones"), &Polygon2DEditor::_sync_bones);
ClassDB::bind_method(D_METHOD("_update_bone_list"), &Polygon2DEditor::_update_bone_list);
-
ClassDB::bind_method(D_METHOD("_bone_paint_selected"), &Polygon2DEditor::_bone_paint_selected);
}
@@ -1046,23 +1117,25 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
AbstractPolygon2DEditor(p_editor) {
node = NULL;
- snap_step = Vector2(10, 10);
- use_snap = false;
- snap_show_grid = false;
+ snap_offset = EditorSettings::get_singleton()->get_project_metadata("polygon_2d_uv_editor", "snap_offset", Vector2());
+ snap_step = EditorSettings::get_singleton()->get_project_metadata("polygon_2d_uv_editor", "snap_step", Vector2(10, 10));
+ use_snap = EditorSettings::get_singleton()->get_project_metadata("polygon_2d_uv_editor", "snap_enabled", false);
+ snap_show_grid = EditorSettings::get_singleton()->get_project_metadata("polygon_2d_uv_editor", "show_grid", false);
button_uv = memnew(ToolButton);
add_child(button_uv);
+ button_uv->set_tooltip(TTR("Open Polygon 2D UV editor."));
button_uv->connect("pressed", this, "_menu_option", varray(MODE_EDIT_UV));
uv_mode = UV_MODE_EDIT_POINT;
uv_edit = memnew(AcceptDialog);
add_child(uv_edit);
uv_edit->set_title(TTR("Polygon 2D UV Editor"));
- uv_edit->set_self_modulate(Color(1, 1, 1, 0.9));
+ uv_edit->set_resizable(true);
+ uv_edit->connect("popup_hide", this, "_uv_edit_popup_hide");
VBoxContainer *uv_main_vb = memnew(VBoxContainer);
uv_edit->add_child(uv_main_vb);
- //uv_edit->set_child_rect(uv_main_vb);
HBoxContainer *uv_mode_hb = memnew(HBoxContainer);
uv_edit_group.instance();
@@ -1109,14 +1182,14 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
}
uv_button[0]->set_tooltip(TTR("Create Polygon"));
- uv_button[1]->set_tooltip(TTR("Move Point") + "\n" + TTR("Ctrl: Rotate") + "\n" + TTR("Shift: Move All") + "\n" + TTR("Shift+Ctrl: Scale"));
+ uv_button[1]->set_tooltip(TTR("Move Points") + "\n" + TTR("Ctrl: Rotate") + "\n" + TTR("Shift: Move All") + "\n" + TTR("Shift+Ctrl: Scale"));
uv_button[2]->set_tooltip(TTR("Move Polygon"));
uv_button[3]->set_tooltip(TTR("Rotate Polygon"));
uv_button[4]->set_tooltip(TTR("Scale Polygon"));
- uv_button[5]->set_tooltip(TTR("Connect two points to make a split"));
- uv_button[6]->set_tooltip(TTR("Select a split to erase it"));
- uv_button[7]->set_tooltip(TTR("Paint weights with specified intensity"));
- uv_button[8]->set_tooltip(TTR("UnPaint weights with specified intensity"));
+ uv_button[5]->set_tooltip(TTR("Connect two points to make a split."));
+ uv_button[6]->set_tooltip(TTR("Select a split to erase it."));
+ uv_button[7]->set_tooltip(TTR("Paint weights with specified intensity."));
+ uv_button[8]->set_tooltip(TTR("Unpaint weights with specified intensity."));
uv_button[0]->hide();
uv_button[5]->hide();
@@ -1134,7 +1207,7 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
bone_paint_strength->set_step(0.01);
bone_paint_strength->set_value(0.5);
- bone_paint_radius_label = memnew(Label(" " + TTR("Radius:") + " "));
+ bone_paint_radius_label = memnew(Label(TTR("Radius:")));
uv_mode_hb->add_child(bone_paint_radius_label);
bone_paint_radius = memnew(SpinBox);
uv_mode_hb->add_child(bone_paint_radius);
@@ -1147,12 +1220,13 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
bone_paint_radius->set_step(1);
bone_paint_radius->set_value(32);
- HBoxContainer *uv_main_hb = memnew(HBoxContainer);
- uv_main_vb->add_child(uv_main_hb);
- uv_edit_draw = memnew(Control);
- uv_main_hb->add_child(uv_edit_draw);
- uv_main_hb->set_v_size_flags(SIZE_EXPAND_FILL);
+ HSplitContainer *uv_main_hsc = memnew(HSplitContainer);
+ uv_main_vb->add_child(uv_main_hsc);
+ uv_main_hsc->set_v_size_flags(SIZE_EXPAND_FILL);
+ uv_edit_draw = memnew(Panel);
+ uv_main_hsc->add_child(uv_edit_draw);
uv_edit_draw->set_h_size_flags(SIZE_EXPAND_FILL);
+ uv_edit_draw->set_custom_minimum_size(Size2(200, 200) * EDSCALE);
uv_menu = memnew(MenuButton);
uv_mode_hb->add_child(uv_menu);
uv_menu->set_text(TTR("Edit"));
@@ -1228,6 +1302,7 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
uv_mode_hb->add_child(memnew(VSeparator));
uv_icon_zoom = memnew(TextureRect);
+ uv_icon_zoom->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
uv_mode_hb->add_child(uv_icon_zoom);
uv_zoom = memnew(HSlider);
uv_zoom->set_min(0.01);
@@ -1245,17 +1320,25 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
uv_zoom->connect("value_changed", this, "_uv_scroll_changed");
uv_vscroll = memnew(VScrollBar);
- uv_main_hb->add_child(uv_vscroll);
+ uv_vscroll->set_step(0.001);
+ uv_edit_draw->add_child(uv_vscroll);
+ uv_vscroll->set_anchors_and_margins_preset(PRESET_RIGHT_WIDE);
uv_vscroll->connect("value_changed", this, "_uv_scroll_changed");
uv_hscroll = memnew(HScrollBar);
- uv_main_vb->add_child(uv_hscroll);
+ uv_hscroll->set_step(0.001);
+ uv_edit_draw->add_child(uv_hscroll);
+ uv_hscroll->set_anchors_and_margins_preset(PRESET_BOTTOM_WIDE);
+ uv_hscroll->set_margin(MARGIN_RIGHT, -uv_vscroll->get_size().x * EDSCALE);
uv_hscroll->connect("value_changed", this, "_uv_scroll_changed");
bone_scroll_main_vb = memnew(VBoxContainer);
bone_scroll_main_vb->hide();
+ bone_scroll_main_vb->set_custom_minimum_size(Size2(150 * EDSCALE, 0));
sync_bones = memnew(Button(TTR("Sync Bones to Polygon")));
bone_scroll_main_vb->add_child(sync_bones);
- uv_main_hb->add_child(bone_scroll_main_vb);
+ sync_bones->set_h_size_flags(0);
+ sync_bones->connect("pressed", this, "_sync_bones");
+ uv_main_hsc->add_child(bone_scroll_main_vb);
bone_scroll = memnew(ScrollContainer);
bone_scroll->set_v_scroll(true);
bone_scroll->set_h_scroll(false);
@@ -1263,7 +1346,6 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) :
bone_scroll->set_v_size_flags(SIZE_EXPAND_FILL);
bone_scroll_vb = memnew(VBoxContainer);
bone_scroll->add_child(bone_scroll_vb);
- sync_bones->connect("pressed", this, "_sync_bones");
uv_edit_draw->connect("draw", this, "_uv_draw");
uv_edit_draw->connect("gui_input", this, "_uv_input");
diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h
index f9b42a21c2..935f1cfff0 100644
--- a/editor/plugins/polygon_2d_editor_plugin.h
+++ b/editor/plugins/polygon_2d_editor_plugin.h
@@ -41,13 +41,11 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
GDCLASS(Polygon2DEditor, AbstractPolygon2DEditor);
enum Mode {
-
MODE_EDIT_UV = MODE_CONT,
UVEDIT_POLYGON_TO_UV,
UVEDIT_UV_TO_POLYGON,
UVEDIT_UV_CLEAR,
UVEDIT_GRID_SETTINGS
-
};
enum UVMode {
@@ -73,7 +71,7 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
ToolButton *uv_button[UV_MODE_MAX];
ToolButton *b_snap_enable;
ToolButton *b_snap_grid;
- Control *uv_edit_draw;
+ Panel *uv_edit_draw;
HSlider *uv_zoom;
SpinBox *uv_zoom_value;
HScrollBar *uv_hscroll;
@@ -125,6 +123,8 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
virtual void _menu_option(int p_option);
+ void _cancel_editing();
+
void _uv_scroll_changed(float);
void _uv_input(const Ref<InputEvent> &p_input);
void _uv_draw();
@@ -138,6 +138,7 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
void _set_snap_step_y(float p_val);
void _uv_edit_mode_select(int p_mode);
+ void _uv_edit_popup_hide();
void _bone_paint_selected(int p_index);
protected:
@@ -146,6 +147,9 @@ protected:
virtual Vector2 _get_offset(int p_idx) const;
+ virtual bool _has_uv() const { return true; };
+ virtual void _commit_action();
+
void _notification(int p_what);
static void _bind_methods();
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index ae6fa8e6bb..44f1625d06 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -40,6 +40,7 @@
#include "editor/editor_settings.h"
#include "editor/find_in_files.h"
#include "editor/node_dock.h"
+#include "editor/plugins/shader_editor_plugin.h"
#include "editor/script_editor_debugger.h"
#include "scene/main/viewport.h"
#include "script_text_editor.h"
@@ -896,12 +897,12 @@ void ScriptEditor::_file_dialog_action(String p_file) {
} break;
case THEME_SAVE_AS: {
if (!EditorSettings::get_singleton()->save_text_editor_theme_as(p_file)) {
- editor->show_warning(TTR("Error while saving theme"), TTR("Error saving"));
+ editor->show_warning(TTR("Error while saving theme."), TTR("Error Saving"));
}
} break;
case THEME_IMPORT: {
if (!EditorSettings::get_singleton()->import_text_editor_theme(p_file)) {
- editor->show_warning(TTR("Error importing theme"), TTR("Error importing"));
+ editor->show_warning(TTR("Error importing theme."), TTR("Error Importing"));
}
} break;
}
@@ -1089,7 +1090,7 @@ void ScriptEditor::_menu_option(int p_option) {
Ref<Script> scr = current->get_edited_resource();
if (scr == NULL || scr.is_null()) {
- EditorNode::get_singleton()->show_warning("Can't obtain the script for running");
+ EditorNode::get_singleton()->show_warning("Can't obtain the script for running.");
break;
}
@@ -1102,13 +1103,13 @@ void ScriptEditor::_menu_option(int p_option) {
}
if (!scr->is_tool()) {
- EditorNode::get_singleton()->show_warning("Script is not in tool mode, will not be able to run");
+ EditorNode::get_singleton()->show_warning("Script is not in tool mode, will not be able to run.");
return;
}
if (!ClassDB::is_parent_class(scr->get_instance_base_type(), "EditorScript")) {
- EditorNode::get_singleton()->show_warning("To run this script, it must inherit EditorScript and be set to tool mode");
+ EditorNode::get_singleton()->show_warning("To run this script, it must inherit EditorScript and be set to tool mode.");
return;
}
@@ -1815,6 +1816,10 @@ Ref<TextFile> ScriptEditor::_load_text_file(const String &p_path, Error *r_error
text_file->set_file_path(local_path);
text_file->set_path(local_path, true);
+ if (ResourceLoader::get_timestamp_on_load()) {
+ text_file->set_last_modified_time(FileAccess::get_modified_time(path));
+ }
+
if (r_error) {
*r_error = OK;
}
@@ -1844,6 +1849,10 @@ Error ScriptEditor::_save_text_file(Ref<TextFile> p_text_file, const String &p_p
file->close();
memdelete(file);
+ if (ResourceSaver::get_timestamp_on_save()) {
+ p_text_file->set_last_modified_time(FileAccess::get_modified_time(p_path));
+ }
+
_res_saved_callback(sqscr);
return OK;
}
@@ -2770,13 +2779,18 @@ void ScriptEditor::_on_find_in_files_requested(String text) {
void ScriptEditor::_on_find_in_files_result_selected(String fpath, int line_number, int begin, int end) {
RES res = ResourceLoader::load(fpath);
- edit(res);
-
- ScriptEditorBase *seb = _get_current_editor();
+ if (fpath.get_extension() == "shader") {
+ ShaderEditorPlugin *shader_editor = Object::cast_to<ShaderEditorPlugin>(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
+ shader_editor->edit(res.ptr());
+ shader_editor->make_visible(true);
+ shader_editor->get_shader_editor()->goto_line_selection(line_number - 1, begin, end);
+ } else {
+ edit(res);
- ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(seb);
- if (ste) {
- ste->goto_line_selection(line_number - 1, begin, end);
+ ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
+ if (ste) {
+ ste->goto_line_selection(line_number - 1, begin, end);
+ }
}
}
@@ -2963,10 +2977,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
file_menu = memnew(MenuButton);
menu_hb->add_child(file_menu);
file_menu->set_text(TTR("File"));
+ file_menu->set_switch_on_hover(true);
file_menu->get_popup()->set_hide_on_window_lose_focus(true);
- file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new", TTR("New Script")), FILE_NEW);
- file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new_textfile", TTR("New TextFile")), FILE_NEW_TEXTFILE);
- file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/open", TTR("Open")), FILE_OPEN);
+ file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new", TTR("New Script...")), FILE_NEW);
+ file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new_textfile", TTR("New TextFile...")), FILE_NEW_TEXTFILE);
+ file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/open", TTR("Open...")), FILE_OPEN);
file_menu->get_popup()->add_submenu_item(TTR("Open Recent"), "RecentScripts", FILE_OPEN_RECENT);
recent_scripts = memnew(PopupMenu);
@@ -2995,10 +3010,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
theme_submenu->set_name("Theme");
file_menu->get_popup()->add_child(theme_submenu);
theme_submenu->connect("id_pressed", this, "_theme_option");
- theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/import_theme", TTR("Import Theme")), THEME_IMPORT);
+ theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/import_theme", TTR("Import Theme...")), THEME_IMPORT);
theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/reload_theme", TTR("Reload Theme")), THEME_RELOAD);
+ theme_submenu->add_separator();
theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/save_theme", TTR("Save Theme")), THEME_SAVE);
- theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/save_theme_as", TTR("Save Theme As")), THEME_SAVE_AS);
+ theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/save_theme_as", TTR("Save Theme As...")), THEME_SAVE_AS);
file_menu->get_popup()->add_separator();
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_docs", TTR("Close Docs")), CLOSE_DOCS);
@@ -3014,6 +3030,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
script_search_menu = memnew(MenuButton);
menu_hb->add_child(script_search_menu);
script_search_menu->set_text(TTR("Search"));
+ script_search_menu->set_switch_on_hover(true);
script_search_menu->get_popup()->set_hide_on_window_lose_focus(true);
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find", TTR("Find..."), KEY_MASK_CMD | KEY_F), HELP_SEARCH_FIND);
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_next", TTR("Find Next"), KEY_F3), HELP_SEARCH_FIND_NEXT);
@@ -3023,6 +3040,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
debug_menu = memnew(MenuButton);
menu_hb->add_child(debug_menu);
debug_menu->set_text(TTR("Debug"));
+ debug_menu->set_switch_on_hover(true);
debug_menu->get_popup()->set_hide_on_window_lose_focus(true);
debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/step_over", TTR("Step Over"), KEY_F10), DEBUG_NEXT);
debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/step_into", TTR("Step Into"), KEY_F11), DEBUG_STEP);
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index e6bb8b24a9..85237f64d9 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -1076,7 +1076,7 @@ void ScriptTextEditor::set_syntax_highlighter(SyntaxHighlighter *p_highlighter)
if (p_highlighter != NULL)
highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->get_name()), true);
else
- highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text("Standard"), true);
+ highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(TTR("Standard")), true);
}
void ScriptTextEditor::_change_syntax_highlighter(int p_idx) {
@@ -1466,6 +1466,7 @@ ScriptTextEditor::ScriptTextEditor() {
edit_menu = memnew(MenuButton);
edit_menu->set_text(TTR("Edit"));
+ edit_menu->set_switch_on_hover(true);
edit_menu->get_popup()->set_hide_on_window_lose_focus(true);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO);
@@ -1509,7 +1510,7 @@ ScriptTextEditor::ScriptTextEditor() {
convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize"), KEY_MASK_SHIFT | KEY_F6), EDIT_CAPITALIZE);
convert_case->connect("id_pressed", this, "_edit_option");
- highlighters["Standard"] = NULL;
+ highlighters[TTR("Standard")] = NULL;
highlighter_menu = memnew(PopupMenu);
highlighter_menu->set_name("highlighter_menu");
edit_menu->get_popup()->add_child(highlighter_menu);
@@ -1520,6 +1521,7 @@ ScriptTextEditor::ScriptTextEditor() {
search_menu = memnew(MenuButton);
edit_hb->add_child(search_menu);
search_menu->set_text(TTR("Search"));
+ search_menu->set_switch_on_hover(true);
search_menu->get_popup()->set_hide_on_window_lose_focus(true);
search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find"), SEARCH_FIND);
search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_next"), SEARCH_FIND_NEXT);
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index 6bc5c77df2..b8d4cf57e3 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -350,9 +350,9 @@ void ShaderEditor::_menu_option(int p_option) {
void ShaderEditor::_notification(int p_what) {
- if (p_what == NOTIFICATION_ENTER_TREE) {
- }
- if (p_what == NOTIFICATION_DRAW) {
+ if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
+ if (is_visible_in_tree())
+ shader_editor->get_text_edit()->grab_focus();
}
}
@@ -389,7 +389,6 @@ void ShaderEditor::_bind_methods() {
ClassDB::bind_method("_menu_option", &ShaderEditor::_menu_option);
ClassDB::bind_method("_params_changed", &ShaderEditor::_params_changed);
ClassDB::bind_method("apply_shaders", &ShaderEditor::apply_shaders);
- //ClassDB::bind_method("_close_current_tab",&ShaderEditor::_close_current_tab);
}
void ShaderEditor::ensure_select_current() {
@@ -405,6 +404,11 @@ void ShaderEditor::ensure_select_current() {
}*/
}
+void ShaderEditor::goto_line_selection(int p_line, int p_begin, int p_end) {
+
+ shader_editor->goto_line_selection(p_line, p_begin, p_end);
+}
+
void ShaderEditor::edit(const Ref<Shader> &p_shader) {
if (p_shader.is_null() || !p_shader->is_text_shader())
@@ -527,9 +531,8 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
HBoxContainer *hbc = memnew(HBoxContainer);
edit_menu = memnew(MenuButton);
- //edit_menu->set_position(Point2(5, -1));
edit_menu->set_text(TTR("Edit"));
-
+ edit_menu->set_switch_on_hover(true);
edit_menu->get_popup()->set_hide_on_window_lose_focus(true);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO);
@@ -549,12 +552,11 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN);
edit_menu->get_popup()->add_separator();
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE);
-
edit_menu->get_popup()->connect("id_pressed", this, "_menu_option");
search_menu = memnew(MenuButton);
- //search_menu->set_position(Point2(38, -1));
search_menu->set_text(TTR("Search"));
+ search_menu->set_switch_on_hover(true);
search_menu->get_popup()->set_hide_on_window_lose_focus(true);
search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find"), SEARCH_FIND);
search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_next"), SEARCH_FIND_NEXT);
diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h
index 2ea1562310..46e3dffdd5 100644
--- a/editor/plugins/shader_editor_plugin.h
+++ b/editor/plugins/shader_editor_plugin.h
@@ -120,6 +120,8 @@ public:
void ensure_select_current();
void edit(const Ref<Shader> &p_shader);
+ void goto_line_selection(int p_line, int p_begin, int p_end);
+
virtual Size2 get_minimum_size() const { return Size2(0, 200); }
void save_external_data();
@@ -143,6 +145,8 @@ public:
virtual void make_visible(bool p_visible);
virtual void selected_notify();
+ ShaderEditor *get_shader_editor() const { return shader_editor; }
+
virtual void save_external_data();
virtual void apply_changes();
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index a5563c0497..4fe278d005 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -3238,7 +3238,7 @@ bool SpatialEditorViewport::_create_instance(Node *parent, String &path, const P
if (mesh != NULL) {
MeshInstance *mesh_instance = memnew(MeshInstance);
mesh_instance->set_mesh(mesh);
- mesh_instance->set_name(mesh->get_name());
+ mesh_instance->set_name(path.get_file().get_basename());
instanced_scene = mesh_instance;
} else {
if (!scene.is_valid()) { // invalid scene
@@ -5475,6 +5475,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
transform_menu = memnew(MenuButton);
transform_menu->set_text(TTR("Transform"));
+ transform_menu->set_switch_on_hover(true);
hbc_menu->add_child(transform_menu);
p = transform_menu->get_popup();
@@ -5487,6 +5488,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
view_menu = memnew(MenuButton);
view_menu->set_text(TTR("View"));
+ view_menu->set_switch_on_hover(true);
hbc_menu->add_child(view_menu);
p = view_menu->get_popup();
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 40781908fd..82936d63d2 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -598,7 +598,7 @@ bool SpriteFramesEditor::can_drop_data_fw(const Point2 &p_point, const Variant &
return false;
for (int i = 0; i < files.size(); i++) {
- String file = files[0];
+ String file = files[i];
String ftype = EditorFileSystem::get_singleton()->get_file_type(file);
if (!ClassDB::is_parent_class(ftype, "Texture")) {
diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp
index 7c3e524d89..aed3a7d503 100644
--- a/editor/plugins/texture_region_editor_plugin.cpp
+++ b/editor/plugins/texture_region_editor_plugin.cpp
@@ -169,15 +169,24 @@ void TextureRegionEditor::_region_draw() {
updating_scroll = true;
hscroll->set_min(scroll_rect.position.x);
hscroll->set_max(scroll_rect.position.x + scroll_rect.size.x);
- hscroll->set_page(edit_draw->get_size().x);
- hscroll->set_value(draw_ofs.x);
- hscroll->set_step(0.001);
+ if (ABS(scroll_rect.position.x - (scroll_rect.position.x + scroll_rect.size.x)) <= edit_draw->get_size().x) {
+ hscroll->hide();
+ } else {
+ hscroll->show();
+ hscroll->set_page(edit_draw->get_size().x);
+ hscroll->set_value(draw_ofs.x);
+ }
vscroll->set_min(scroll_rect.position.y);
vscroll->set_max(scroll_rect.position.y + scroll_rect.size.y);
- vscroll->set_page(edit_draw->get_size().y);
- vscroll->set_value(draw_ofs.y);
- vscroll->set_step(0.001);
+ if (ABS(scroll_rect.position.y - (scroll_rect.position.y + scroll_rect.size.y)) <= edit_draw->get_size().y) {
+ vscroll->hide();
+ draw_ofs.y = scroll_rect.position.y;
+ } else {
+ vscroll->show();
+ vscroll->set_page(edit_draw->get_size().y);
+ vscroll->set_value(draw_ofs.y);
+ }
updating_scroll = false;
float margins[4];
@@ -299,6 +308,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
undo_redo->add_do_method(atlas_tex.ptr(), "set_region", rect);
undo_redo->add_undo_method(atlas_tex.ptr(), "set_region", atlas_tex->get_region());
}
+ undo_redo->add_do_method(this, "_update_rect");
+ undo_redo->add_undo_method(this, "_update_rect");
undo_redo->add_do_method(edit_draw, "update");
undo_redo->add_undo_method(edit_draw, "update");
undo_redo->commit_action();
@@ -336,7 +347,7 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
} else if (drag) {
if (edited_margin >= 0) {
- undo_redo->create_action("Set Margin");
+ undo_redo->create_action(TTR("Set Margin"));
static Margin m[4] = { MARGIN_TOP, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT };
if (node_ninepatch) {
undo_redo->add_do_method(node_ninepatch, "set_patch_margin", m[edited_margin], node_ninepatch->get_patch_margin(m[edited_margin]));
@@ -348,7 +359,7 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
}
edited_margin = -1;
} else {
- undo_redo->create_action("Set Region Rect");
+ undo_redo->create_action(TTR("Set Region Rect"));
if (node_sprite) {
undo_redo->add_do_method(node_sprite, "set_region_rect", node_sprite->get_region_rect());
undo_redo->add_undo_method(node_sprite, "set_region_rect", rect_prev);
@@ -364,6 +375,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
}
drag_index = -1;
}
+ undo_redo->add_do_method(this, "_update_rect");
+ undo_redo->add_undo_method(this, "_update_rect");
undo_redo->add_do_method(edit_draw, "update");
undo_redo->add_undo_method(edit_draw, "update");
undo_redo->commit_action();
@@ -509,10 +522,7 @@ void TextureRegionEditor::_scroll_changed(float) {
}
void TextureRegionEditor::_set_snap_mode(int p_mode) {
- snap_mode_button->get_popup()->set_item_checked(snap_mode, false);
snap_mode = p_mode;
- snap_mode_button->set_text(snap_mode_button->get_popup()->get_item_text(p_mode));
- snap_mode_button->get_popup()->set_item_checked(snap_mode, true);
if (snap_mode == SNAP_GRID)
hb_grid->show();
@@ -577,15 +587,26 @@ void TextureRegionEditor::_zoom_out() {
}
}
-void TextureRegionEditor::apply_rect(const Rect2 &rect) {
+void TextureRegionEditor::apply_rect(const Rect2 &p_rect) {
+ if (node_sprite)
+ node_sprite->set_region_rect(p_rect);
+ else if (node_ninepatch)
+ node_ninepatch->set_region_rect(p_rect);
+ else if (obj_styleBox.is_valid())
+ obj_styleBox->set_region_rect(p_rect);
+ else if (atlas_tex.is_valid())
+ atlas_tex->set_region(p_rect);
+}
+
+void TextureRegionEditor::_update_rect() {
if (node_sprite)
- node_sprite->set_region_rect(rect);
+ rect = node_sprite->get_region_rect();
else if (node_ninepatch)
- node_ninepatch->set_region_rect(rect);
+ rect = node_ninepatch->get_region_rect();
else if (obj_styleBox.is_valid())
- obj_styleBox->set_region_rect(rect);
+ rect = obj_styleBox->get_region_rect();
else if (atlas_tex.is_valid())
- atlas_tex->set_region(rect);
+ rect = atlas_tex->get_region();
}
void TextureRegionEditor::_update_autoslice() {
@@ -657,6 +678,10 @@ void TextureRegionEditor::_update_autoslice() {
void TextureRegionEditor::_notification(int p_what) {
switch (p_what) {
+ case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_THEME_CHANGED: {
+ edit_draw->add_style_override("panel", get_stylebox("bg", "Tree"));
+ } break;
case NOTIFICATION_READY: {
zoom_out->set_icon(get_icon("ZoomLess", "EditorIcons"));
zoom_reset->set_icon(get_icon("ZoomReset", "EditorIcons"));
@@ -669,7 +694,7 @@ void TextureRegionEditor::_notification(int p_what) {
} break;
case MainLoop::NOTIFICATION_WM_FOCUS_IN: {
// This happens when the user leaves the Editor and returns,
- // he/she could have changed the textures, so the cache is cleared
+ // they could have changed the textures, so the cache is cleared.
cache_map.clear();
_edit_region();
} break;
@@ -702,6 +727,7 @@ void TextureRegionEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_zoom_in"), &TextureRegionEditor::_zoom_in);
ClassDB::bind_method(D_METHOD("_zoom_reset"), &TextureRegionEditor::_zoom_reset);
ClassDB::bind_method(D_METHOD("_zoom_out"), &TextureRegionEditor::_zoom_out);
+ ClassDB::bind_method(D_METHOD("_update_rect"), &TextureRegionEditor::_update_rect);
}
bool TextureRegionEditor::is_stylebox() {
@@ -774,6 +800,9 @@ void TextureRegionEditor::_edit_region() {
texture = atlas_tex->get_atlas();
if (texture.is_null()) {
+ _zoom_reset();
+ hscroll->hide();
+ vscroll->hide();
edit_draw->update();
return;
}
@@ -790,15 +819,7 @@ void TextureRegionEditor::_edit_region() {
}
}
- if (node_sprite)
- rect = node_sprite->get_region_rect();
- else if (node_ninepatch)
- rect = node_ninepatch->get_region_rect();
- else if (obj_styleBox.is_valid())
- rect = obj_styleBox->get_region_rect();
- else if (atlas_tex.is_valid())
- rect = atlas_tex->get_region();
-
+ _update_rect();
edit_draw->update();
}
@@ -826,30 +847,23 @@ TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) {
drag_index = -1;
drag = false;
- VBoxContainer *main_vb = memnew(VBoxContainer);
- add_child(main_vb);
- main_vb->set_anchors_and_margins_preset(Control::PRESET_WIDE);
HBoxContainer *hb_tools = memnew(HBoxContainer);
- main_vb->add_child(hb_tools);
-
+ add_child(hb_tools);
hb_tools->add_child(memnew(Label(TTR("Snap Mode:"))));
- snap_mode_button = memnew(MenuButton);
+ snap_mode_button = memnew(OptionButton);
hb_tools->add_child(snap_mode_button);
- snap_mode_button->set_text(TTR("<None>"));
- PopupMenu *p = snap_mode_button->get_popup();
- p->set_hide_on_checkable_item_selection(false);
- p->add_radio_check_item(TTR("<None>"), 0);
- p->add_radio_check_item(TTR("Pixel Snap"), 1);
- p->add_radio_check_item(TTR("Grid Snap"), 2);
- p->add_radio_check_item(TTR("Auto Slice"), 3);
- p->set_item_checked(0, true);
- p->connect("id_pressed", this, "_set_snap_mode");
+ snap_mode_button->add_item(TTR("None"), 0);
+ snap_mode_button->add_item(TTR("Pixel Snap"), 1);
+ snap_mode_button->add_item(TTR("Grid Snap"), 2);
+ snap_mode_button->add_item(TTR("Auto Slice"), 3);
+ snap_mode_button->select(0);
+ snap_mode_button->connect("item_selected", this, "_set_snap_mode");
+
hb_grid = memnew(HBoxContainer);
- //hb_tools->add_child(hb_grid);
- main_vb->add_child(hb_grid);
- hb_grid->add_child(memnew(VSeparator));
+ hb_tools->add_child(hb_grid);
+ hb_grid->add_child(memnew(VSeparator));
hb_grid->add_child(memnew(Label(TTR("Offset:"))));
sb_off_x = memnew(SpinBox);
@@ -914,42 +928,47 @@ TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) {
hb_grid->hide();
- HBoxContainer *main_hb = memnew(HBoxContainer);
- main_vb->add_child(main_hb);
- edit_draw = memnew(Control);
- main_hb->add_child(edit_draw);
- main_hb->set_v_size_flags(SIZE_EXPAND_FILL);
- edit_draw->set_h_size_flags(SIZE_EXPAND_FILL);
+ edit_draw = memnew(Panel);
+ add_child(edit_draw);
+ edit_draw->set_v_size_flags(SIZE_EXPAND_FILL);
+ edit_draw->connect("draw", this, "_region_draw");
+ edit_draw->connect("gui_input", this, "_region_input");
+
+ draw_zoom = 1.0;
+ edit_draw->set_clip_contents(true);
- Control *separator = memnew(Control);
- separator->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- hb_tools->add_child(separator);
+ HBoxContainer *zoom_hb = memnew(HBoxContainer);
+ edit_draw->add_child(zoom_hb);
+ zoom_hb->set_begin(Point2(5, 5));
zoom_out = memnew(ToolButton);
+ zoom_out->set_tooltip(TTR("Zoom Out"));
zoom_out->connect("pressed", this, "_zoom_out");
- hb_tools->add_child(zoom_out);
+ zoom_hb->add_child(zoom_out);
zoom_reset = memnew(ToolButton);
+ zoom_out->set_tooltip(TTR("Zoom Reset"));
zoom_reset->connect("pressed", this, "_zoom_reset");
- hb_tools->add_child(zoom_reset);
+ zoom_hb->add_child(zoom_reset);
zoom_in = memnew(ToolButton);
+ zoom_out->set_tooltip(TTR("Zoom In"));
zoom_in->connect("pressed", this, "_zoom_in");
- hb_tools->add_child(zoom_in);
+ zoom_hb->add_child(zoom_in);
vscroll = memnew(VScrollBar);
- main_hb->add_child(vscroll);
+ vscroll->set_step(0.001);
+ edit_draw->add_child(vscroll);
+ vscroll->set_anchors_and_margins_preset(PRESET_RIGHT_WIDE);
vscroll->connect("value_changed", this, "_scroll_changed");
hscroll = memnew(HScrollBar);
- main_vb->add_child(hscroll);
+ hscroll->set_step(0.001);
+ edit_draw->add_child(hscroll);
+ hscroll->set_anchors_and_margins_preset(PRESET_BOTTOM_WIDE);
+ hscroll->set_margin(MARGIN_RIGHT, -vscroll->get_size().x * EDSCALE);
hscroll->connect("value_changed", this, "_scroll_changed");
- edit_draw->connect("draw", this, "_region_draw");
- edit_draw->connect("gui_input", this, "_region_input");
- draw_zoom = 1.0;
updating_scroll = false;
-
- edit_draw->set_clip_contents(true);
}
void TextureRegionEditorPlugin::edit(Object *p_object) {
@@ -978,7 +997,6 @@ void TextureRegionEditorPlugin::make_visible(bool p_visible) {
Dictionary TextureRegionEditorPlugin::get_state() const {
Dictionary state;
- state["zoom"] = region_editor->draw_zoom;
state["snap_offset"] = region_editor->snap_offset;
state["snap_step"] = region_editor->snap_step;
state["snap_separation"] = region_editor->snap_separation;
@@ -989,10 +1007,6 @@ Dictionary TextureRegionEditorPlugin::get_state() const {
void TextureRegionEditorPlugin::set_state(const Dictionary &p_state) {
Dictionary state = p_state;
- if (state.has("zoom")) {
- region_editor->draw_zoom = p_state["zoom"];
- }
-
if (state.has("snap_step")) {
Vector2 s = state["snap_step"];
region_editor->sb_step_x->set_value(s.x);
@@ -1016,6 +1030,7 @@ void TextureRegionEditorPlugin::set_state(const Dictionary &p_state) {
if (state.has("snap_mode")) {
region_editor->_set_snap_mode(state["snap_mode"]);
+ region_editor->snap_mode_button->select(state["snap_mode"]);
}
}
diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h
index 61ef769f89..4f301ea916 100644
--- a/editor/plugins/texture_region_editor_plugin.h
+++ b/editor/plugins/texture_region_editor_plugin.h
@@ -43,9 +43,9 @@
@author Mariano Suligoy
*/
-class TextureRegionEditor : public Control {
+class TextureRegionEditor : public VBoxContainer {
- GDCLASS(TextureRegionEditor, Control);
+ GDCLASS(TextureRegionEditor, VBoxContainer);
enum SnapMode {
SNAP_NONE,
@@ -55,7 +55,7 @@ class TextureRegionEditor : public Control {
};
friend class TextureRegionEditorPlugin;
- MenuButton *snap_mode_button;
+ OptionButton *snap_mode_button;
ToolButton *zoom_in;
ToolButton *zoom_reset;
ToolButton *zoom_out;
@@ -66,7 +66,7 @@ class TextureRegionEditor : public Control {
SpinBox *sb_off_x;
SpinBox *sb_sep_y;
SpinBox *sb_sep_x;
- Control *edit_draw;
+ Panel *edit_draw;
VScrollBar *vscroll;
HScrollBar *hscroll;
@@ -111,7 +111,8 @@ class TextureRegionEditor : public Control {
void _zoom_in();
void _zoom_reset();
void _zoom_out();
- void apply_rect(const Rect2 &rect);
+ void apply_rect(const Rect2 &p_rect);
+ void _update_rect();
void _update_autoslice();
protected:
diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp
index 213cd2ce1a..1d8a80d3f3 100644
--- a/editor/plugins/tile_map_editor_plugin.cpp
+++ b/editor/plugins/tile_map_editor_plugin.cpp
@@ -1862,7 +1862,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) {
toolbar->add_child(tile_info);
options = memnew(MenuButton);
- options->set_text("Tile Map");
+ options->set_text("TileMap");
options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("TileMap", "EditorIcons"));
options->set_process_unhandled_key_input(false);
diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp
index d0e0b3e006..cab9a4297d 100644
--- a/editor/plugins/tile_set_editor_plugin.cpp
+++ b/editor/plugins/tile_set_editor_plugin.cpp
@@ -172,6 +172,7 @@ Error TileSetEditor::update_library_file(Node *p_base_scene, Ref<TileSet> ml, bo
}
void TileSetEditor::_bind_methods() {
+
ClassDB::bind_method("_on_tileset_toolbar_button_pressed", &TileSetEditor::_on_tileset_toolbar_button_pressed);
ClassDB::bind_method("_on_textures_added", &TileSetEditor::_on_textures_added);
ClassDB::bind_method("_on_tileset_toolbar_confirm", &TileSetEditor::_on_tileset_toolbar_confirm);
@@ -184,58 +185,69 @@ void TileSetEditor::_bind_methods() {
ClassDB::bind_method("_on_workspace_input", &TileSetEditor::_on_workspace_input);
ClassDB::bind_method("_on_tool_clicked", &TileSetEditor::_on_tool_clicked);
ClassDB::bind_method("_on_priority_changed", &TileSetEditor::_on_priority_changed);
+ ClassDB::bind_method("_on_z_index_changed", &TileSetEditor::_on_z_index_changed);
ClassDB::bind_method("_on_grid_snap_toggled", &TileSetEditor::_on_grid_snap_toggled);
ClassDB::bind_method("_set_snap_step", &TileSetEditor::_set_snap_step);
ClassDB::bind_method("_set_snap_off", &TileSetEditor::_set_snap_off);
ClassDB::bind_method("_set_snap_sep", &TileSetEditor::_set_snap_sep);
+ ClassDB::bind_method("_zoom_in", &TileSetEditor::_zoom_in);
+ ClassDB::bind_method("_zoom_out", &TileSetEditor::_zoom_out);
+ ClassDB::bind_method("_zoom_reset", &TileSetEditor::_zoom_reset);
}
void TileSetEditor::_notification(int p_what) {
- if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) {
-
- tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_icon(get_icon("ToolAddNode", "EditorIcons"));
- tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_icon(get_icon("Remove", "EditorIcons"));
- tileset_toolbar_tools->set_icon(get_icon("Tools", "EditorIcons"));
-
- tool_workspacemode[WORKSPACE_EDIT]->set_icon(get_icon("Edit", "EditorIcons"));
- tool_workspacemode[WORKSPACE_CREATE_SINGLE]->set_icon(get_icon("AddSingleTile", "EditorIcons"));
- tool_workspacemode[WORKSPACE_CREATE_AUTOTILE]->set_icon(get_icon("AddAutotile", "EditorIcons"));
- tool_workspacemode[WORKSPACE_CREATE_ATLAS]->set_icon(get_icon("AddAtlasTile", "EditorIcons"));
-
- tools[TOOL_SELECT]->set_icon(get_icon("ToolSelect", "EditorIcons"));
- tools[BITMASK_COPY]->set_icon(get_icon("Duplicate", "EditorIcons"));
- tools[BITMASK_PASTE]->set_icon(get_icon("Override", "EditorIcons"));
- tools[BITMASK_CLEAR]->set_icon(get_icon("Clear", "EditorIcons"));
- tools[SHAPE_NEW_POLYGON]->set_icon(get_icon("CollisionPolygon2D", "EditorIcons"));
- tools[SHAPE_DELETE]->set_icon(get_icon("Remove", "EditorIcons"));
- tools[SHAPE_KEEP_INSIDE_TILE]->set_icon(get_icon("Snap", "EditorIcons"));
- tools[TOOL_GRID_SNAP]->set_icon(get_icon("SnapGrid", "EditorIcons"));
- tools[ZOOM_OUT]->set_icon(get_icon("ZoomLess", "EditorIcons"));
- tools[ZOOM_1]->set_icon(get_icon("ZoomReset", "EditorIcons"));
- tools[ZOOM_IN]->set_icon(get_icon("ZoomMore", "EditorIcons"));
- tools[VISIBLE_INFO]->set_icon(get_icon("InformationSign", "EditorIcons"));
-
- tool_editmode[EDITMODE_REGION]->set_icon(get_icon("RegionEdit", "EditorIcons"));
- tool_editmode[EDITMODE_COLLISION]->set_icon(get_icon("StaticBody2D", "EditorIcons"));
- tool_editmode[EDITMODE_OCCLUSION]->set_icon(get_icon("LightOccluder2D", "EditorIcons"));
- tool_editmode[EDITMODE_NAVIGATION]->set_icon(get_icon("Navigation2D", "EditorIcons"));
- tool_editmode[EDITMODE_BITMASK]->set_icon(get_icon("PackedDataContainer", "EditorIcons"));
- tool_editmode[EDITMODE_PRIORITY]->set_icon(get_icon("MaterialPreviewLight1", "EditorIcons"));
- tool_editmode[EDITMODE_ICON]->set_icon(get_icon("LargeTexture", "EditorIcons"));
+
+ switch (p_what) {
+ case NOTIFICATION_READY: {
+
+ add_constant_override("autohide", 1); // Fixes the dragger always showing up.
+ } break;
+ case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_THEME_CHANGED: {
+
+ tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_icon(get_icon("ToolAddNode", "EditorIcons"));
+ tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_icon(get_icon("Remove", "EditorIcons"));
+ tileset_toolbar_tools->set_icon(get_icon("Tools", "EditorIcons"));
+
+ tool_workspacemode[WORKSPACE_EDIT]->set_icon(get_icon("Edit", "EditorIcons"));
+ tool_workspacemode[WORKSPACE_CREATE_SINGLE]->set_icon(get_icon("AddSingleTile", "EditorIcons"));
+ tool_workspacemode[WORKSPACE_CREATE_AUTOTILE]->set_icon(get_icon("AddAutotile", "EditorIcons"));
+ tool_workspacemode[WORKSPACE_CREATE_ATLAS]->set_icon(get_icon("AddAtlasTile", "EditorIcons"));
+
+ tools[TOOL_SELECT]->set_icon(get_icon("ToolSelect", "EditorIcons"));
+ tools[BITMASK_COPY]->set_icon(get_icon("Duplicate", "EditorIcons"));
+ tools[BITMASK_PASTE]->set_icon(get_icon("Override", "EditorIcons"));
+ tools[BITMASK_CLEAR]->set_icon(get_icon("Clear", "EditorIcons"));
+ tools[SHAPE_NEW_POLYGON]->set_icon(get_icon("CollisionPolygon2D", "EditorIcons"));
+ tools[SHAPE_DELETE]->set_icon(get_icon("Remove", "EditorIcons"));
+ tools[SHAPE_KEEP_INSIDE_TILE]->set_icon(get_icon("Snap", "EditorIcons"));
+ tools[TOOL_GRID_SNAP]->set_icon(get_icon("SnapGrid", "EditorIcons"));
+ tools[ZOOM_OUT]->set_icon(get_icon("ZoomLess", "EditorIcons"));
+ tools[ZOOM_1]->set_icon(get_icon("ZoomReset", "EditorIcons"));
+ tools[ZOOM_IN]->set_icon(get_icon("ZoomMore", "EditorIcons"));
+ tools[VISIBLE_INFO]->set_icon(get_icon("InformationSign", "EditorIcons"));
+
+ tool_editmode[EDITMODE_REGION]->set_icon(get_icon("RegionEdit", "EditorIcons"));
+ tool_editmode[EDITMODE_COLLISION]->set_icon(get_icon("StaticBody2D", "EditorIcons"));
+ tool_editmode[EDITMODE_OCCLUSION]->set_icon(get_icon("LightOccluder2D", "EditorIcons"));
+ tool_editmode[EDITMODE_NAVIGATION]->set_icon(get_icon("Navigation2D", "EditorIcons"));
+ tool_editmode[EDITMODE_BITMASK]->set_icon(get_icon("PackedDataContainer", "EditorIcons"));
+ tool_editmode[EDITMODE_PRIORITY]->set_icon(get_icon("MaterialPreviewLight1", "EditorIcons"));
+ tool_editmode[EDITMODE_ICON]->set_icon(get_icon("LargeTexture", "EditorIcons"));
+ tool_editmode[EDITMODE_Z_INDEX]->set_icon(get_icon("Sort", "EditorIcons"));
+
+ scroll->add_style_override("bg", get_stylebox("bg", "Tree"));
+ } break;
}
}
TileSetEditor::TileSetEditor(EditorNode *p_editor) {
editor = p_editor;
- set_name("Tile Set Bottom Editor");
-
- HSplitContainer *split = memnew(HSplitContainer);
- split->set_anchors_and_margins_preset(PRESET_WIDE, PRESET_MODE_MINSIZE, 10);
- add_child(split);
+ current_tile = -1;
VBoxContainer *left_container = memnew(VBoxContainer);
- split->add_child(left_container);
+ add_child(left_container);
texture_list = memnew(ItemList);
left_container->add_child(texture_list);
@@ -247,30 +259,22 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
left_container->add_child(tileset_toolbar_container);
tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE] = memnew(ToolButton);
- Vector<Variant> p;
- p.push_back((int)TOOL_TILESET_ADD_TEXTURE);
- tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->connect("pressed", this, "_on_tileset_toolbar_button_pressed", p);
+ tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->connect("pressed", this, "_on_tileset_toolbar_button_pressed", varray(TOOL_TILESET_ADD_TEXTURE));
tileset_toolbar_container->add_child(tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]);
- tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_tooltip(TTR("Add Texture(s) to TileSet"));
+ tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_tooltip(TTR("Add Texture(s) to TileSet."));
tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)TOOL_TILESET_REMOVE_TEXTURE);
- tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->connect("pressed", this, "_on_tileset_toolbar_button_pressed", p);
+ tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->connect("pressed", this, "_on_tileset_toolbar_button_pressed", varray(TOOL_TILESET_REMOVE_TEXTURE));
tileset_toolbar_container->add_child(tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]);
- tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_tooltip(TTR("Remove current Texture from TileSet"));
+ tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_tooltip(TTR("Remove selected Texture from TileSet."));
Control *toolbar_separator = memnew(Control);
toolbar_separator->set_h_size_flags(Control::SIZE_EXPAND_FILL);
tileset_toolbar_container->add_child(toolbar_separator);
tileset_toolbar_tools = memnew(MenuButton);
- tileset_toolbar_tools->set_text("Tools");
- p = Vector<Variant>();
- p.push_back((int)TOOL_TILESET_CREATE_SCENE);
+ tileset_toolbar_tools->set_text(TTR("Tools"));
tileset_toolbar_tools->get_popup()->add_item(TTR("Create from Scene"), TOOL_TILESET_CREATE_SCENE);
- p = Vector<Variant>();
- p.push_back((int)TOOL_TILESET_MERGE_SCENE);
tileset_toolbar_tools->get_popup()->add_item(TTR("Merge from Scene"), TOOL_TILESET_MERGE_SCENE);
tileset_toolbar_tools->get_popup()->connect("id_pressed", this, "_on_tileset_toolbar_button_pressed");
@@ -279,7 +283,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
//---------------
VBoxContainer *right_container = memnew(VBoxContainer);
right_container->set_v_size_flags(SIZE_EXPAND_FILL);
- split->add_child(right_container);
+ add_child(right_container);
dragging_point = -1;
creating_shape = false;
@@ -296,21 +300,18 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
Ref<ButtonGroup> g(memnew(ButtonGroup));
String workspace_label[WORKSPACE_MODE_MAX] = { "Edit", "New Single Tile", "New Autotile", "New Atlas" };
-
for (int i = 0; i < (int)WORKSPACE_MODE_MAX; i++) {
tool_workspacemode[i] = memnew(Button);
- tool_workspacemode[i]->set_text(workspace_label[i]);
+ tool_workspacemode[i]->set_text(TTR(workspace_label[i]));
tool_workspacemode[i]->set_toggle_mode(true);
tool_workspacemode[i]->set_button_group(g);
- Vector<Variant> p;
- p.push_back(i);
- tool_workspacemode[i]->connect("pressed", this, "_on_workspace_mode_changed", p);
+ tool_workspacemode[i]->connect("pressed", this, "_on_workspace_mode_changed", varray(i));
tool_hb->add_child(tool_workspacemode[i]);
}
Control *spacer = memnew(Control);
spacer->set_h_size_flags(Control::SIZE_EXPAND_FILL);
tool_hb->add_child(spacer);
- tool_hb->move_child(spacer, (int)WORKSPACE_CREATE_SINGLE);
+ tool_hb->move_child(spacer, WORKSPACE_CREATE_SINGLE);
tool_workspacemode[WORKSPACE_EDIT]->set_pressed(true);
workspace_mode = WORKSPACE_EDIT;
@@ -321,16 +322,13 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
tool_hb = memnew(HBoxContainer);
g = Ref<ButtonGroup>(memnew(ButtonGroup));
- String label[EDITMODE_MAX] = { "Region", "Collision", "Occlusion", "Navigation", "Bitmask", "Priority", "Icon" };
-
+ String label[EDITMODE_MAX] = { "Region", "Collision", "Occlusion", "Navigation", "Bitmask", "Priority", "Icon", "Z Index" };
for (int i = 0; i < (int)EDITMODE_MAX; i++) {
tool_editmode[i] = memnew(Button);
tool_editmode[i]->set_text(label[i]);
tool_editmode[i]->set_toggle_mode(true);
tool_editmode[i]->set_button_group(g);
- Vector<Variant> p;
- p.push_back(i);
- tool_editmode[i]->connect("pressed", this, "_on_edit_mode_changed", p);
+ tool_editmode[i]->connect("pressed", this, "_on_edit_mode_changed", varray(i));
tool_hb->add_child(tool_editmode[i]);
}
tool_editmode[EDITMODE_COLLISION]->set_pressed(true);
@@ -343,42 +341,38 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
toolbar = memnew(HBoxContainer);
Ref<ButtonGroup> tg(memnew(ButtonGroup));
- p = Vector<Variant>();
tools[TOOL_SELECT] = memnew(ToolButton);
toolbar->add_child(tools[TOOL_SELECT]);
- tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to use as icon, this will be also used on invalid autotile bindings."));
tools[TOOL_SELECT]->set_toggle_mode(true);
tools[TOOL_SELECT]->set_button_group(tg);
tools[TOOL_SELECT]->set_pressed(true);
- p.push_back((int)TOOL_SELECT);
- tools[TOOL_SELECT]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[TOOL_SELECT]->connect("pressed", this, "_on_tool_clicked", varray(TOOL_SELECT));
+ separator_bitmask = memnew(VSeparator);
+ toolbar->add_child(separator_bitmask);
tools[BITMASK_COPY] = memnew(ToolButton);
- p.push_back((int)BITMASK_COPY);
- tools[BITMASK_COPY]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[BITMASK_COPY]->set_tooltip(TTR("Copy bitmask."));
+ tools[BITMASK_COPY]->connect("pressed", this, "_on_tool_clicked", varray(BITMASK_COPY));
toolbar->add_child(tools[BITMASK_COPY]);
tools[BITMASK_PASTE] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)BITMASK_PASTE);
- tools[BITMASK_PASTE]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[BITMASK_PASTE]->set_tooltip(TTR("Paste bitmask."));
+ tools[BITMASK_PASTE]->connect("pressed", this, "_on_tool_clicked", varray(BITMASK_PASTE));
toolbar->add_child(tools[BITMASK_PASTE]);
tools[BITMASK_CLEAR] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)BITMASK_CLEAR);
- tools[BITMASK_CLEAR]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[BITMASK_CLEAR]->set_tooltip(TTR("Erase bitmask."));
+ tools[BITMASK_CLEAR]->connect("pressed", this, "_on_tool_clicked", varray(BITMASK_CLEAR));
toolbar->add_child(tools[BITMASK_CLEAR]);
tools[SHAPE_NEW_POLYGON] = memnew(ToolButton);
toolbar->add_child(tools[SHAPE_NEW_POLYGON]);
tools[SHAPE_NEW_POLYGON]->set_toggle_mode(true);
tools[SHAPE_NEW_POLYGON]->set_button_group(tg);
+ tools[SHAPE_NEW_POLYGON]->set_tooltip(TTR("Create a new polygon."));
separator_delete = memnew(VSeparator);
toolbar->add_child(separator_delete);
tools[SHAPE_DELETE] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)SHAPE_DELETE);
- tools[SHAPE_DELETE]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[SHAPE_DELETE]->connect("pressed", this, "_on_tool_clicked", varray(SHAPE_DELETE));
toolbar->add_child(tools[SHAPE_DELETE]);
separator_grid = memnew(VSeparator);
@@ -386,9 +380,11 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
tools[SHAPE_KEEP_INSIDE_TILE] = memnew(ToolButton);
tools[SHAPE_KEEP_INSIDE_TILE]->set_toggle_mode(true);
tools[SHAPE_KEEP_INSIDE_TILE]->set_pressed(true);
+ tools[SHAPE_KEEP_INSIDE_TILE]->set_tooltip(TTR("Keep polygon inside region Rect."));
toolbar->add_child(tools[SHAPE_KEEP_INSIDE_TILE]);
tools[TOOL_GRID_SNAP] = memnew(ToolButton);
tools[TOOL_GRID_SNAP]->set_toggle_mode(true);
+ tools[TOOL_GRID_SNAP]->set_tooltip(TTR("Enable snap and show grid (configurable via the Inspector)."));
tools[TOOL_GRID_SNAP]->connect("toggled", this, "_on_grid_snap_toggled");
toolbar->add_child(tools[TOOL_GRID_SNAP]);
@@ -401,32 +397,35 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
spin_priority->hide();
toolbar->add_child(spin_priority);
+ spin_z_index = memnew(SpinBox);
+ spin_z_index->set_min(VS::CANVAS_ITEM_Z_MIN);
+ spin_z_index->set_max(VS::CANVAS_ITEM_Z_MAX);
+ spin_z_index->set_step(1);
+ spin_z_index->set_custom_minimum_size(Size2(100, 0));
+ spin_z_index->connect("value_changed", this, "_on_z_index_changed");
+ spin_z_index->hide();
+ toolbar->add_child(spin_z_index);
+
Control *separator = memnew(Control);
separator->set_h_size_flags(SIZE_EXPAND_FILL);
toolbar->add_child(separator);
tools[ZOOM_OUT] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)ZOOM_OUT);
- tools[ZOOM_OUT]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[ZOOM_OUT]->connect("pressed", this, "_zoom_out");
toolbar->add_child(tools[ZOOM_OUT]);
tools[ZOOM_OUT]->set_tooltip(TTR("Zoom Out"));
tools[ZOOM_1] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)ZOOM_1);
- tools[ZOOM_1]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[ZOOM_1]->connect("pressed", this, "_zoom_reset");
toolbar->add_child(tools[ZOOM_1]);
- tools[ZOOM_1]->set_tooltip(TTR("Reset Zoom"));
+ tools[ZOOM_1]->set_tooltip(TTR("Zoom Reset"));
tools[ZOOM_IN] = memnew(ToolButton);
- p = Vector<Variant>();
- p.push_back((int)ZOOM_IN);
- tools[ZOOM_IN]->connect("pressed", this, "_on_tool_clicked", p);
+ tools[ZOOM_IN]->connect("pressed", this, "_zoom_in");
toolbar->add_child(tools[ZOOM_IN]);
tools[ZOOM_IN]->set_tooltip(TTR("Zoom In"));
tools[VISIBLE_INFO] = memnew(ToolButton);
tools[VISIBLE_INFO]->set_toggle_mode(true);
- tools[VISIBLE_INFO]->set_tooltip(TTR("Display tile's names (hold Alt Key)"));
+ tools[VISIBLE_INFO]->set_tooltip(TTR("Display Tile Names (Hold Alt Key)"));
toolbar->add_child(tools[VISIBLE_INFO]);
main_vb->add_child(toolbar);
@@ -600,10 +599,14 @@ void TileSetEditor::_on_textures_added(const PoolStringArray &p_paths) {
}
void TileSetEditor::_on_edit_mode_changed(int p_edit_mode) {
+ draw_handles = false;
+ creating_shape = false;
edit_mode = (EditMode)p_edit_mode;
switch (edit_mode) {
case EDITMODE_REGION: {
tools[TOOL_SELECT]->show();
+
+ separator_bitmask->hide();
tools[BITMASK_COPY]->hide();
tools[BITMASK_PASTE]->hide();
tools[BITMASK_CLEAR]->hide();
@@ -623,30 +626,16 @@ void TileSetEditor::_on_edit_mode_changed(int p_edit_mode) {
tools[TOOL_SELECT]->set_pressed(true);
tools[TOOL_SELECT]->set_tooltip(TTR("Drag handles to edit Rect.\nClick on another Tile to edit it."));
+ tools[SHAPE_DELETE]->set_tooltip(TTR("Delete selected Rect."));
spin_priority->hide();
- } break;
- case EDITMODE_BITMASK: {
- tools[TOOL_SELECT]->show();
- tools[BITMASK_COPY]->show();
- tools[BITMASK_PASTE]->show();
- tools[BITMASK_CLEAR]->show();
- tools[SHAPE_NEW_POLYGON]->hide();
-
- separator_delete->hide();
- tools[SHAPE_DELETE]->hide();
-
- separator_grid->hide();
- tools[SHAPE_KEEP_INSIDE_TILE]->hide();
- tools[TOOL_GRID_SNAP]->hide();
-
- tools[TOOL_SELECT]->set_pressed(true);
- tools[TOOL_SELECT]->set_tooltip(TTR("LMB: set bit on.\nRMB: set bit off.\nClick on another Tile to edit it."));
- spin_priority->hide();
+ spin_z_index->hide();
} break;
case EDITMODE_COLLISION:
case EDITMODE_NAVIGATION:
case EDITMODE_OCCLUSION: {
tools[TOOL_SELECT]->show();
+
+ separator_bitmask->hide();
tools[BITMASK_COPY]->hide();
tools[BITMASK_PASTE]->hide();
tools[BITMASK_CLEAR]->hide();
@@ -660,11 +649,38 @@ void TileSetEditor::_on_edit_mode_changed(int p_edit_mode) {
tools[TOOL_GRID_SNAP]->show();
tools[TOOL_SELECT]->set_tooltip(TTR("Select current edited sub-tile.\nClick on another Tile to edit it."));
+ tools[SHAPE_DELETE]->set_tooltip(TTR("Delete polygon."));
spin_priority->hide();
+ spin_z_index->hide();
+
select_coord(edited_shape_coord);
} break;
- default: {
+ case EDITMODE_BITMASK: {
tools[TOOL_SELECT]->show();
+
+ separator_bitmask->show();
+ tools[BITMASK_COPY]->show();
+ tools[BITMASK_PASTE]->show();
+ tools[BITMASK_CLEAR]->show();
+ tools[SHAPE_NEW_POLYGON]->hide();
+
+ separator_delete->hide();
+ tools[SHAPE_DELETE]->hide();
+
+ separator_grid->hide();
+ tools[SHAPE_KEEP_INSIDE_TILE]->hide();
+ tools[TOOL_GRID_SNAP]->hide();
+
+ tools[TOOL_SELECT]->set_pressed(true);
+ tools[TOOL_SELECT]->set_tooltip(TTR("LMB: Set bit on.\nRMB: Set bit off.\nClick on another Tile to edit it."));
+ spin_priority->hide();
+ } break;
+ case EDITMODE_Z_INDEX:
+ case EDITMODE_PRIORITY:
+ case EDITMODE_ICON: {
+ tools[TOOL_SELECT]->show();
+
+ separator_bitmask->hide();
tools[BITMASK_COPY]->hide();
tools[BITMASK_PASTE]->hide();
tools[BITMASK_CLEAR]->hide();
@@ -680,11 +696,18 @@ void TileSetEditor::_on_edit_mode_changed(int p_edit_mode) {
if (edit_mode == EDITMODE_ICON) {
tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to use as icon, this will be also used on invalid autotile bindings.\nClick on another Tile to edit it."));
spin_priority->hide();
- } else {
+ spin_z_index->hide();
+ } else if (edit_mode == EDITMODE_PRIORITY) {
tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change its priority.\nClick on another Tile to edit it."));
spin_priority->show();
+ spin_z_index->hide();
+ } else {
+ tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change its z index.\nClick on another Tile to edit it."));
+ spin_priority->hide();
+ spin_z_index->show();
}
} break;
+ default: {}
}
workspace->update();
}
@@ -706,15 +729,16 @@ void TileSetEditor::_on_workspace_mode_changed(int p_workspace_mode) {
void TileSetEditor::_on_workspace_draw() {
- const Color COLOR_AUTOTILE = Color(0.266373, 0.565288, 0.988281);
- const Color COLOR_SINGLE = Color(0.988281, 0.909323, 0.266373);
- const Color COLOR_ATLAS = Color(0.78653, 0.812835, 0.832031);
-
- if (tileset.is_null())
- return;
- if (!get_current_texture().is_valid())
+ if (tileset.is_null() || !get_current_texture().is_valid())
return;
+ const Color COLOR_AUTOTILE = Color(0.3, 0.6, 1);
+ const Color COLOR_SINGLE = Color(1, 1, 0.3);
+ const Color COLOR_ATLAS = Color(0.8, 0.8, 0.8);
+ const Color COLOR_SUBDIVISION = Color(0.3, 0.7, 0.6);
+
+ draw_handles = false;
+
draw_highlight_current_tile();
draw_grid_snap();
@@ -808,10 +832,12 @@ void TileSetEditor::_on_workspace_draw() {
spin_priority->set_suffix(" / " + String::num(total, 0));
draw_highlight_subtile(edited_shape_coord, queue_others);
} break;
+ case EDITMODE_Z_INDEX: {
+ spin_z_index->set_value(tileset->autotile_get_z_index(get_current_tile(), edited_shape_coord));
+ draw_highlight_subtile(edited_shape_coord);
+ } break;
default: {}
}
-
- draw_tile_subdivision(get_current_tile(), Color(0.347214, 0.722656, 0.617063));
}
RID current_texture_rid = get_current_texture()->get_rid();
@@ -819,7 +845,7 @@ void TileSetEditor::_on_workspace_draw() {
tileset->get_tile_list(tiles);
for (List<int>::Element *E = tiles->front(); E; E = E->next()) {
int t_id = E->get();
- if (tileset->tile_get_texture(t_id)->get_rid() == current_texture_rid && (t_id != get_current_tile() || edit_mode != EDITMODE_REGION)) {
+ if (tileset->tile_get_texture(t_id)->get_rid() == current_texture_rid && (t_id != get_current_tile() || edit_mode != EDITMODE_REGION || workspace_mode != WORKSPACE_EDIT)) {
Rect2i region = tileset->tile_get_region(t_id);
region.position += WORKSPACE_MARGIN;
Color c;
@@ -829,10 +855,11 @@ void TileSetEditor::_on_workspace_draw() {
c = COLOR_AUTOTILE;
else if (tileset->tile_get_tile_mode(t_id) == TileSet::ATLAS_TILE)
c = COLOR_ATLAS;
- draw_tile_subdivision(t_id, Color(0.347214, 0.722656, 0.617063, 0.5));
+ draw_tile_subdivision(t_id, COLOR_SUBDIVISION);
workspace->draw_rect(region, c, false);
}
}
+
if (edit_mode == EDITMODE_REGION) {
if (workspace_mode != WORKSPACE_EDIT) {
Rect2i region = edited_region;
@@ -854,6 +881,12 @@ void TileSetEditor::_on_workspace_draw() {
region = tileset->tile_get_region(t_id);
region.position += WORKSPACE_MARGIN;
}
+
+ if (draw_edited_region)
+ draw_edited_region_subdivision();
+ else
+ draw_tile_subdivision(t_id, COLOR_SUBDIVISION);
+
Color c;
if (tileset->tile_get_tile_mode(t_id) == TileSet::SINGLE_TILE)
c = COLOR_SINGLE;
@@ -861,13 +894,10 @@ void TileSetEditor::_on_workspace_draw() {
c = COLOR_AUTOTILE;
else if (tileset->tile_get_tile_mode(t_id) == TileSet::ATLAS_TILE)
c = COLOR_ATLAS;
- if (draw_edited_region)
- draw_edited_region_subdivision();
- else
- draw_tile_subdivision(t_id, Color(0.347214, 0.722656, 0.617063, 1));
workspace->draw_rect(region, c, false);
}
}
+
workspace_overlay->update();
}
@@ -887,9 +917,7 @@ void TileSetEditor::_on_workspace_process() {
void TileSetEditor::_on_workspace_overlay_draw() {
- if (!tileset.is_valid())
- return;
- if (!get_current_texture().is_valid())
+ if (!tileset.is_valid() || !get_current_texture().is_valid())
return;
const Color COLOR_AUTOTILE = Color(0.266373, 0.565288, 0.988281);
@@ -939,9 +967,8 @@ void TileSetEditor::_on_workspace_overlay_draw() {
#define MIN_DISTANCE_SQUARED 6
void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
- if (tileset.is_null())
- return;
- if (!get_current_texture().is_valid())
+
+ if (tileset.is_null() || !get_current_texture().is_valid())
return;
static bool dragging;
@@ -979,11 +1006,9 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
}
// Mouse Wheel Event
- const int _mouse_button_index = mb->get_button_index();
- if (_mouse_button_index == BUTTON_WHEEL_UP && mb->get_control()) {
+ if (mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed() && mb->get_control()) {
_zoom_in();
-
- } else if (_mouse_button_index == BUTTON_WHEEL_DOWN && mb->get_control()) {
+ } else if (mb->get_button_index() == BUTTON_WHEEL_DOWN && mb->is_pressed() && mb->get_control()) {
_zoom_out();
}
}
@@ -1032,10 +1057,14 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
tileset->tile_set_tile_mode(t_id, workspace_mode == WORKSPACE_CREATE_AUTOTILE ? TileSet::AUTO_TILE : TileSet::ATLAS_TILE);
}
set_current_tile(t_id);
+
tool_workspacemode[WORKSPACE_EDIT]->set_pressed(true);
+ tool_editmode[EDITMODE_COLLISION]->set_pressed(true);
+ edit_mode = EDITMODE_COLLISION;
_on_workspace_mode_changed(WORKSPACE_EDIT);
}
}
+ edited_region = Rect2();
workspace->update();
workspace_overlay->update();
return;
@@ -1201,7 +1230,8 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
case EDITMODE_COLLISION:
case EDITMODE_OCCLUSION:
case EDITMODE_NAVIGATION:
- case EDITMODE_PRIORITY: {
+ case EDITMODE_PRIORITY:
+ case EDITMODE_Z_INDEX: {
Vector2 shape_anchor = Vector2(0, 0);
if (tileset->tile_get_tile_mode(get_current_tile()) == TileSet::AUTO_TILE || tileset->tile_get_tile_mode(get_current_tile()) == TileSet::ATLAS_TILE) {
shape_anchor = edited_shape_coord;
@@ -1416,6 +1446,7 @@ void TileSetEditor::_on_tool_clicked(int p_tool) {
case EDITMODE_REGION: {
if (workspace_mode == WORKSPACE_EDIT && get_current_tile() >= 0) {
tileset->remove_tile(get_current_tile());
+ set_current_tile(-1);
workspace->update();
workspace_overlay->update();
}
@@ -1461,12 +1492,6 @@ void TileSetEditor::_on_tool_clicked(int p_tool) {
default: {}
}
}
- } else if (p_tool == ZOOM_OUT) {
- _zoom_out();
- } else if (p_tool == ZOOM_1) {
- _reset_zoom();
- } else if (p_tool == ZOOM_IN) {
- _zoom_in();
} else if (p_tool == TOOL_SELECT) {
if (creating_shape) {
// Cancel Creation
@@ -1482,6 +1507,11 @@ void TileSetEditor::_on_priority_changed(float val) {
workspace->update();
}
+void TileSetEditor::_on_z_index_changed(float val) {
+ tileset->autotile_set_z_index(get_current_tile(), edited_shape_coord, (int)val);
+ workspace->update();
+}
+
void TileSetEditor::_on_grid_snap_toggled(bool p_val) {
helper->set_snap_options_visible(p_val);
workspace->update();
@@ -1524,7 +1554,7 @@ void TileSetEditor::_zoom_out() {
workspace_overlay->set_custom_minimum_size(workspace->get_rect().size * scale);
}
}
-void TileSetEditor::_reset_zoom() {
+void TileSetEditor::_zoom_reset() {
workspace->set_scale(Vector2(1, 1));
workspace_container->set_custom_minimum_size(workspace->get_rect().size);
workspace_overlay->set_custom_minimum_size(workspace->get_rect().size);
@@ -1532,20 +1562,32 @@ void TileSetEditor::_reset_zoom() {
void TileSetEditor::draw_highlight_current_tile() {
- if (get_current_tile() >= 0) {
- Rect2 region = tileset->tile_get_region(get_current_tile());
- region.position += WORKSPACE_MARGIN;
- workspace->draw_rect(Rect2(0, 0, workspace->get_rect().size.x, region.position.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(0, region.position.y, region.position.x, region.size.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(region.position.x + region.size.x, region.position.y, workspace->get_rect().size.x - region.position.x - region.size.x, region.size.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(0, region.position.y + region.size.y, workspace->get_rect().size.x, workspace->get_rect().size.y - region.size.y - region.position.y), Color(0.3, 0.3, 0.3, 0.3));
+ Color shadow_color = Color(0.3, 0.3, 0.3, 0.3);
+ if ((workspace_mode == WORKSPACE_EDIT && get_current_tile() >= 0) || !edited_region.has_no_area()) {
+ Rect2 region;
+ if (edited_region.has_no_area()) {
+ region = tileset->tile_get_region(get_current_tile());
+ region.position += WORKSPACE_MARGIN;
+ } else {
+ region = edited_region;
+ }
+
+ if (region.position.y >= 0)
+ workspace->draw_rect(Rect2(0, 0, workspace->get_rect().size.x, region.position.y), shadow_color);
+ if (region.position.x >= 0)
+ workspace->draw_rect(Rect2(0, MAX(0, region.position.y), region.position.x, MIN(workspace->get_rect().size.y - region.position.y, MIN(region.size.y, region.position.y + region.size.y))), shadow_color);
+ if (region.position.x + region.size.x <= workspace->get_rect().size.x)
+ workspace->draw_rect(Rect2(region.position.x + region.size.x, MAX(0, region.position.y), workspace->get_rect().size.x - region.position.x - region.size.x, MIN(workspace->get_rect().size.y - region.position.y, MIN(region.size.y, region.position.y + region.size.y))), shadow_color);
+ if (region.position.y + region.size.y <= workspace->get_rect().size.y)
+ workspace->draw_rect(Rect2(0, region.position.y + region.size.y, workspace->get_rect().size.x, workspace->get_rect().size.y - region.size.y - region.position.y), shadow_color);
} else {
- workspace->draw_rect(Rect2(Point2(0, 0), workspace->get_rect().size), Color(0.3, 0.3, 0.3, 0.3));
+ workspace->draw_rect(Rect2(Point2(0, 0), workspace->get_rect().size), shadow_color);
}
}
void TileSetEditor::draw_highlight_subtile(Vector2 coord, const Vector<Vector2> &other_highlighted) {
+ Color shadow_color = Color(0.3, 0.3, 0.3, 0.3);
Vector2 size = tileset->autotile_get_size(get_current_tile());
int spacing = tileset->autotile_get_spacing(get_current_tile());
Rect2 region = tileset->tile_get_region(get_current_tile());
@@ -1553,10 +1595,16 @@ void TileSetEditor::draw_highlight_subtile(Vector2 coord, const Vector<Vector2>
coord.y *= (size.y + spacing);
coord += region.position;
coord += WORKSPACE_MARGIN;
- workspace->draw_rect(Rect2(0, 0, workspace->get_rect().size.x, coord.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(0, coord.y, coord.x, size.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(coord.x + size.x, coord.y, workspace->get_rect().size.x - coord.x - size.x, size.y), Color(0.3, 0.3, 0.3, 0.3));
- workspace->draw_rect(Rect2(0, coord.y + size.y, workspace->get_rect().size.x, workspace->get_rect().size.y - size.y - coord.y), Color(0.3, 0.3, 0.3, 0.3));
+
+ if (coord.y >= 0)
+ workspace->draw_rect(Rect2(0, 0, workspace->get_rect().size.x, coord.y), shadow_color);
+ if (coord.x >= 0)
+ workspace->draw_rect(Rect2(0, MAX(0, coord.y), coord.x, MIN(workspace->get_rect().size.y - coord.y, MIN(size.y, coord.y + size.y))), shadow_color);
+ if (coord.x + size.x <= workspace->get_rect().size.x)
+ workspace->draw_rect(Rect2(coord.x + size.x, MAX(0, coord.y), workspace->get_rect().size.x - coord.x - size.x, MIN(workspace->get_rect().size.y - coord.y, MIN(size.y, coord.y + size.y))), shadow_color);
+ if (coord.y + size.y <= workspace->get_rect().size.y)
+ workspace->draw_rect(Rect2(0, coord.y + size.y, workspace->get_rect().size.x, workspace->get_rect().size.y - size.y - coord.y), shadow_color);
+
coord += Vector2(1, 1) / workspace->get_scale().x;
workspace->draw_rect(Rect2(coord, size - Vector2(2, 2) / workspace->get_scale().x), Color(1, 0, 0), false);
for (int i = 0; i < other_highlighted.size(); i++) {
@@ -1576,35 +1624,35 @@ void TileSetEditor::draw_tile_subdivision(int p_id, Color p_color) const {
Rect2 region = tileset->tile_get_region(p_id);
Size2 size = tileset->autotile_get_size(p_id);
int spacing = tileset->autotile_get_spacing(p_id);
- float j = 0;
+ float j = size.x;
+
while (j < region.size.x) {
- j += size.x;
if (spacing <= 0) {
workspace->draw_line(region.position + WORKSPACE_MARGIN + Point2(j, 0), region.position + WORKSPACE_MARGIN + Point2(j, region.size.y), c);
} else {
workspace->draw_rect(Rect2(region.position + WORKSPACE_MARGIN + Point2(j, 0), Size2(spacing, region.size.y)), c);
}
- j += spacing;
+ j += spacing + size.x;
}
- j = 0;
+ j = size.y;
while (j < region.size.y) {
- j += size.y;
if (spacing <= 0) {
workspace->draw_line(region.position + WORKSPACE_MARGIN + Point2(0, j), region.position + WORKSPACE_MARGIN + Point2(region.size.x, j), c);
} else {
workspace->draw_rect(Rect2(region.position + WORKSPACE_MARGIN + Point2(0, j), Size2(region.size.x, spacing)), c);
}
- j += spacing;
+ j += spacing + size.y;
}
}
}
void TileSetEditor::draw_edited_region_subdivision() const {
- Color c = Color(0.347214, 0.722656, 0.617063, 1);
+ Color c = Color(0.3, 0.7, 0.6);
Rect2 region = edited_region;
Size2 size;
int spacing;
bool draw;
+
if (workspace_mode == WORKSPACE_EDIT) {
int p_id = get_current_tile();
size = tileset->autotile_get_size(p_id);
@@ -1615,66 +1663,72 @@ void TileSetEditor::draw_edited_region_subdivision() const {
spacing = snap_separation.x;
draw = workspace_mode != WORKSPACE_CREATE_SINGLE;
}
- if (draw) {
- float j = 0;
+ if (draw) {
+ float j = size.x;
while (j < region.size.x) {
- j += size.x;
if (spacing <= 0) {
workspace->draw_line(region.position + Point2(j, 0), region.position + Point2(j, region.size.y), c);
} else {
workspace->draw_rect(Rect2(region.position + Point2(j, 0), Size2(spacing, region.size.y)), c);
}
- j += spacing;
+ j += spacing + size.x;
}
- j = 0;
+ j = size.y;
while (j < region.size.y) {
- j += size.y;
if (spacing <= 0) {
workspace->draw_line(region.position + Point2(0, j), region.position + Point2(region.size.x, j), c);
} else {
workspace->draw_rect(Rect2(region.position + Point2(0, j), Size2(region.size.x, spacing)), c);
}
- j += spacing;
+ j += spacing + size.y;
}
}
}
void TileSetEditor::draw_grid_snap() {
if (tools[TOOL_GRID_SNAP]->is_pressed()) {
- Color grid_color = Color(0.39, 0, 1, 0.2f);
+ Color grid_color = Color(0.4, 0, 1);
Size2 s = workspace->get_size();
- int width_count = (int)(s.width / (snap_step.x + snap_separation.x));
- int height_count = (int)(s.height / (snap_step.y + snap_separation.y));
+ int width_count = Math::floor((s.width - WORKSPACE_MARGIN.x) / (snap_step.x + snap_separation.x));
+ int height_count = Math::floor((s.height - WORKSPACE_MARGIN.y) / (snap_step.y + snap_separation.y));
+ int last_p = 0;
if (snap_step.x != 0) {
- int last_p = 0;
for (int i = 0; i <= width_count; i++) {
if (i == 0 && snap_offset.x != 0) {
last_p = snap_offset.x;
}
- if (snap_separation.x != 0 && i != 0) {
- workspace->draw_rect(Rect2(last_p, 0, snap_separation.x, s.height), grid_color);
- last_p += snap_separation.x;
- } else
+ if (snap_separation.x != 0) {
+ if (i != 0) {
+ workspace->draw_rect(Rect2(last_p, 0, snap_separation.x, s.height), grid_color);
+ last_p += snap_separation.x;
+ } else {
+ workspace->draw_rect(Rect2(last_p, 0, -snap_separation.x, s.height), grid_color);
+ }
+ } else {
workspace->draw_line(Point2(last_p, 0), Point2(last_p, s.height), grid_color);
-
+ }
last_p += snap_step.x;
}
}
-
+ last_p = 0;
if (snap_step.y != 0) {
- int last_p = 0;
for (int i = 0; i <= height_count; i++) {
if (i == 0 && snap_offset.y != 0) {
last_p = snap_offset.y;
}
- if (snap_separation.x != 0 && i != 0) {
- workspace->draw_rect(Rect2(0, last_p, s.width, snap_separation.y), grid_color);
- last_p += snap_separation.y;
- } else
+ if (snap_separation.x != 0) {
+ if (i != 0) {
+ workspace->draw_rect(Rect2(0, last_p, s.width, snap_separation.y), grid_color);
+ last_p += snap_separation.y;
+ } else {
+ workspace->draw_rect(Rect2(0, last_p, s.width, -snap_separation.y), grid_color);
+ }
+ } else {
workspace->draw_line(Point2(0, last_p), Point2(s.width, last_p), grid_color);
+ }
last_p += snap_step.y;
}
}
@@ -1687,8 +1741,6 @@ void TileSetEditor::draw_polygon_shapes() {
if (t_id < 0)
return;
- draw_handles = false;
-
switch (edit_mode) {
case EDITMODE_COLLISION: {
Vector<TileSet::ShapeData> sd = tileset->tile_get_shapes(t_id);
@@ -2154,6 +2206,18 @@ void TileSetEditor::update_texture_list_icon() {
void TileSetEditor::update_workspace_tile_mode() {
+ if (!get_current_texture().is_valid()) {
+ tool_workspacemode[WORKSPACE_EDIT]->set_pressed(true);
+ workspace_mode = WORKSPACE_EDIT;
+ for (int i = 1; i < WORKSPACE_MODE_MAX; i++) {
+ tool_workspacemode[i]->set_disabled(true);
+ }
+ } else {
+ for (int i = 1; i < WORKSPACE_MODE_MAX; i++) {
+ tool_workspacemode[i]->set_disabled(false);
+ }
+ }
+
if (workspace_mode != WORKSPACE_EDIT) {
for (int i = 0; i < EDITMODE_MAX; i++) {
tool_editmode[i]->hide();
@@ -2172,7 +2236,9 @@ void TileSetEditor::update_workspace_tile_mode() {
for (int i = 0; i < ZOOM_OUT; i++) {
tools[i]->hide();
}
+
separator_editmode->hide();
+ separator_bitmask->hide();
separator_delete->hide();
separator_grid->hide();
return;
@@ -2184,7 +2250,7 @@ void TileSetEditor::update_workspace_tile_mode() {
separator_editmode->show();
if (tileset->tile_get_tile_mode(get_current_tile()) == TileSet::SINGLE_TILE) {
- if (tool_editmode[EDITMODE_ICON]->is_pressed() || tool_editmode[EDITMODE_PRIORITY]->is_pressed() || tool_editmode[EDITMODE_BITMASK]->is_pressed()) {
+ if (tool_editmode[EDITMODE_ICON]->is_pressed() || tool_editmode[EDITMODE_PRIORITY]->is_pressed() || tool_editmode[EDITMODE_BITMASK]->is_pressed() || tool_editmode[EDITMODE_Z_INDEX]->is_pressed()) {
tool_editmode[EDITMODE_COLLISION]->set_pressed(true);
edit_mode = EDITMODE_COLLISION;
}
@@ -2193,6 +2259,7 @@ void TileSetEditor::update_workspace_tile_mode() {
tool_editmode[EDITMODE_ICON]->hide();
tool_editmode[EDITMODE_BITMASK]->hide();
tool_editmode[EDITMODE_PRIORITY]->hide();
+ tool_editmode[EDITMODE_Z_INDEX]->hide();
} else if (tileset->tile_get_tile_mode(get_current_tile()) == TileSet::AUTO_TILE || tileset->tile_get_tile_mode(get_current_tile()) == TileSet::ATLAS_TILE) {
if (edit_mode == EDITMODE_ICON)
select_coord(tileset->autotile_get_icon_coordinate(get_current_tile()));
@@ -2218,25 +2285,18 @@ void TileSetEditor::update_edited_region(const Vector2 &end_point) {
edited_region = Rect2(region_from, Size2());
if (tools[TOOL_GRID_SNAP]->is_pressed()) {
Vector2 grid_coord;
- grid_coord.x = Math::floor((region_from.x - snap_offset.x) / (snap_step.x + snap_separation.x));
- grid_coord.y = Math::floor((region_from.y - snap_offset.y) / (snap_step.y + snap_separation.y));
- grid_coord.x *= (snap_step.x + snap_separation.x);
- grid_coord.y *= (snap_step.y + snap_separation.y);
+ grid_coord = ((region_from - snap_offset) / (snap_step + snap_separation)).floor();
+ grid_coord *= (snap_step + snap_separation);
grid_coord += snap_offset;
edited_region.expand_to(grid_coord);
- grid_coord += snap_step;
+ grid_coord += snap_step + snap_separation;
edited_region.expand_to(grid_coord);
- grid_coord.x = Math::floor((end_point.x - snap_offset.x) / (snap_step.x + snap_separation.x));
- grid_coord.y = Math::floor((end_point.y - snap_offset.y) / (snap_step.y + snap_separation.y));
- grid_coord.x *= (snap_step.x + snap_separation.x);
- grid_coord.y *= (snap_step.y + snap_separation.y);
+
+ grid_coord = ((end_point - snap_offset) / (snap_step + snap_separation)).floor();
+ grid_coord *= (snap_step + snap_separation);
grid_coord += snap_offset;
edited_region.expand_to(grid_coord);
- grid_coord += snap_step;
- if (grid_coord.x < end_point.x)
- grid_coord.x += snap_separation.x;
- if (grid_coord.y < end_point.y)
- grid_coord.y += snap_separation.y;
+ grid_coord += snap_step + snap_separation;
edited_region.expand_to(grid_coord);
} else {
edited_region.expand_to(end_point);
@@ -2414,7 +2474,13 @@ void TilesetEditorContext::_get_property_list(List<PropertyInfo> *p_list) const
}
}
+void TilesetEditorContext::_bind_methods() {
+
+ ClassDB::bind_method("_hide_script_from_inspector", &TilesetEditorContext::_hide_script_from_inspector);
+}
+
TilesetEditorContext::TilesetEditorContext(TileSetEditor *p_tileset_editor) {
+
tileset_editor = p_tileset_editor;
}
@@ -2428,8 +2494,7 @@ void TileSetEditorPlugin::edit(Object *p_node) {
bool TileSetEditorPlugin::handles(Object *p_node) const {
- return p_node->is_class("TileSet") ||
- p_node->is_class("TilesetEditorContext");
+ return p_node->is_class("TileSet") || p_node->is_class("TilesetEditorContext");
}
void TileSetEditorPlugin::make_visible(bool p_visible) {
@@ -2444,6 +2509,41 @@ void TileSetEditorPlugin::make_visible(bool p_visible) {
}
}
+Dictionary TileSetEditorPlugin::get_state() const {
+
+ Dictionary state;
+ state["snap_offset"] = tileset_editor->snap_offset;
+ state["snap_step"] = tileset_editor->snap_step;
+ state["snap_separation"] = tileset_editor->snap_separation;
+ state["snap_enabled"] = tileset_editor->tools[TileSetEditor::TOOL_GRID_SNAP]->is_pressed();
+ state["keep_inside_tile"] = tileset_editor->tools[TileSetEditor::SHAPE_KEEP_INSIDE_TILE]->is_pressed();
+ return state;
+}
+
+void TileSetEditorPlugin::set_state(const Dictionary &p_state) {
+
+ Dictionary state = p_state;
+ if (state.has("snap_step")) {
+ tileset_editor->_set_snap_step(state["snap_step"]);
+ }
+
+ if (state.has("snap_offset")) {
+ tileset_editor->_set_snap_off(state["snap_offset"]);
+ }
+
+ if (state.has("snap_separation")) {
+ tileset_editor->_set_snap_sep(state["snap_separation"]);
+ }
+
+ if (state.has("snap_enabled")) {
+ tileset_editor->tools[TileSetEditor::TOOL_GRID_SNAP]->set_pressed(state["snap_enabled"]);
+ }
+
+ if (state.has("keep_inside_tile")) {
+ tileset_editor->tools[TileSetEditor::SHAPE_KEEP_INSIDE_TILE]->set_pressed(state["keep_inside_tile"]);
+ }
+}
+
TileSetEditorPlugin::TileSetEditorPlugin(EditorNode *p_node) {
editor = p_node;
tileset_editor = memnew(TileSetEditor(p_node));
@@ -2451,6 +2551,6 @@ TileSetEditorPlugin::TileSetEditorPlugin(EditorNode *p_node) {
tileset_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
tileset_editor->hide();
- tileset_editor_button = p_node->add_bottom_panel_item(TTR("Tile Set"), tileset_editor);
+ tileset_editor_button = p_node->add_bottom_panel_item(TTR("TileSet"), tileset_editor);
tileset_editor_button->hide();
}
diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h
index bd8a2ddb98..276e23f9ee 100644
--- a/editor/plugins/tile_set_editor_plugin.h
+++ b/editor/plugins/tile_set_editor_plugin.h
@@ -40,12 +40,12 @@
#define WORKSPACE_MARGIN Vector2(10, 10)
class TilesetEditorContext;
-class TileSetEditor : public Control {
+class TileSetEditor : public HSplitContainer {
friend class TileSetEditorPlugin;
friend class TilesetEditorContext;
- GDCLASS(TileSetEditor, Control)
+ GDCLASS(TileSetEditor, HSplitContainer)
enum TextureToolButtons {
TOOL_TILESET_ADD_TEXTURE,
@@ -71,6 +71,7 @@ class TileSetEditor : public Control {
EDITMODE_BITMASK,
EDITMODE_PRIORITY,
EDITMODE_ICON,
+ EDITMODE_Z_INDEX,
EDITMODE_MAX
};
@@ -134,9 +135,11 @@ class TileSetEditor : public Control {
HSeparator *separator_editmode;
HBoxContainer *toolbar;
ToolButton *tools[TOOL_MAX];
+ VSeparator *separator_bitmask;
VSeparator *separator_delete;
VSeparator *separator_grid;
SpinBox *spin_priority;
+ SpinBox *spin_z_index;
WorkspaceMode workspace_mode;
EditMode edit_mode;
int current_tile;
@@ -177,6 +180,7 @@ private:
void _on_workspace_input(const Ref<InputEvent> &p_ie);
void _on_tool_clicked(int p_tool);
void _on_priority_changed(float val);
+ void _on_z_index_changed(float val);
void _on_grid_snap_toggled(bool p_val);
void _set_snap_step(Vector2 p_val);
void _set_snap_off(Vector2 p_val);
@@ -184,7 +188,7 @@ private:
void _zoom_in();
void _zoom_out();
- void _reset_zoom();
+ void _zoom_reset();
void draw_highlight_current_tile();
void draw_highlight_subtile(Vector2 coord, const Vector<Vector2> &other_highlighted = Vector<Vector2>());
@@ -212,6 +216,7 @@ class TilesetEditorContext : public Object {
bool snap_options_visible;
public:
+ bool _hide_script_from_inspector() { return true; }
void set_tileset(const Ref<TileSet> &p_tileset);
private:
@@ -221,6 +226,7 @@ protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
+ static void _bind_methods();
public:
TilesetEditorContext(TileSetEditor *p_tileset_editor);
@@ -240,6 +246,8 @@ public:
virtual void edit(Object *p_node);
virtual bool handles(Object *p_node) const;
virtual void make_visible(bool p_visible);
+ void set_state(const Dictionary &p_state);
+ Dictionary get_state() const;
TileSetEditorPlugin(EditorNode *p_node);
};
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 39e50ec7f8..d3295c0f51 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -633,18 +633,23 @@ void VisualShaderEditor::_duplicate_nodes() {
VisualShader::Type type = VisualShader::Type(edit_type->get_selected());
List<int> nodes;
+ Set<int> excluded;
for (int i = 0; i < graph->get_child_count(); i++) {
- if (Object::cast_to<GraphNode>(graph->get_child(i))) {
- int id = String(graph->get_child(i)->get_name()).to_int();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
+ if (gn) {
+ int id = String(gn->get_name()).to_int();
Ref<VisualShaderNode> node = visual_shader->get_node(type, id);
Ref<VisualShaderNodeOutput> output = node;
- if (output.is_valid()) //can't duplicate output
+ if (output.is_valid()) { // can't duplicate output
+ excluded.insert(id);
continue;
- if (node.is_valid()) {
+ }
+ if (node.is_valid() && gn->is_selected()) {
nodes.push_back(id);
}
+ excluded.insert(id);
}
}
@@ -683,15 +688,16 @@ void VisualShaderEditor::_duplicate_nodes() {
undo_redo->add_undo_method(this, "_update_graph");
undo_redo->commit_action();
- //reselect
+ // reselect duplicated nodes by excluding the other ones
for (int i = 0; i < graph->get_child_count(); i++) {
- if (Object::cast_to<GraphNode>(graph->get_child(i))) {
- int id = String(graph->get_child(i)->get_name()).to_int();
- if (nodes.find(id)) {
- Object::cast_to<GraphNode>(graph->get_child(i))->set_selected(true);
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
+ if (gn) {
+ int id = String(gn->get_name()).to_int();
+ if (!excluded.has(id)) {
+ gn->set_selected(true);
} else {
- Object::cast_to<GraphNode>(graph->get_child(i))->set_selected(false);
+ gn->set_selected(false);
}
}
}
@@ -798,7 +804,7 @@ VisualShaderEditor::VisualShaderEditor() {
add_node = memnew(MenuButton);
graph->get_zoom_hbox()->add_child(add_node);
- add_node->set_text(TTR("Add Node.."));
+ add_node->set_text(TTR("Add Node..."));
graph->get_zoom_hbox()->move_child(add_node, 0);
add_node->get_popup()->connect("id_pressed", this, "_add_node");
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index f8ba6fd4e3..f82133e0d3 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -56,7 +56,7 @@ void ProjectExportDialog::_notification(int p_what) {
custom_feature_display->get_parent_control()->add_style_override("panel", get_stylebox("bg", "Tree"));
} break;
case NOTIFICATION_POPUP_HIDE: {
- EditorSettings::get_singleton()->set("interface/dialogs/export_bounds", get_rect());
+ EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "export", get_rect());
} break;
case NOTIFICATION_THEME_CHANGED: {
duplicate_preset->set_icon(get_icon("Duplicate", "EditorIcons"));
@@ -84,8 +84,9 @@ void ProjectExportDialog::popup_export() {
}
// Restore valid window bounds or pop up at default size.
- if (EditorSettings::get_singleton()->has_setting("interface/dialogs/export_bounds")) {
- popup(EditorSettings::get_singleton()->get("interface/dialogs/export_bounds"));
+ Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "export", Rect2());
+ if (saved_size != Rect2()) {
+ popup(saved_size);
} else {
Size2 popup_size = Size2(900, 700) * editor_get_scale();
@@ -191,7 +192,7 @@ void ProjectExportDialog::_edit_preset(int p_index) {
if (p_index < 0 || p_index >= presets->get_item_count()) {
name->set_text("");
name->set_editable(false);
- export_path->set_editable(false);
+ export_path->hide();
runnable->set_disabled(true);
parameters->edit(NULL);
presets->unselect_all();
@@ -213,11 +214,19 @@ void ProjectExportDialog::_edit_preset(int p_index) {
sections->show();
name->set_editable(true);
- export_path->set_editable(true);
+ export_path->show();
duplicate_preset->set_disabled(false);
delete_preset->set_disabled(false);
name->set_text(current->get_name());
- export_path->set_text(current->get_export_path());
+
+ List<String> extension_list = current->get_platform()->get_binary_extensions(current);
+ Vector<String> extension_vector;
+ for (int i = 0; i < extension_list.size(); i++) {
+ extension_vector.push_back("*." + extension_list[i]);
+ }
+
+ export_path->setup(extension_vector, false, true);
+ export_path->update_property();
runnable->set_disabled(false);
runnable->set_pressed(current->is_runnable());
parameters->edit(current.ptr());
@@ -289,6 +298,7 @@ void ProjectExportDialog::_edit_preset(int p_index) {
custom_features->set_text(current->get_custom_features());
_update_feature_list();
_update_export_all();
+ minimum_size_changed();
updating = false;
}
@@ -457,7 +467,21 @@ void ProjectExportDialog::_name_changed(const String &p_string) {
_update_presets();
}
-void ProjectExportDialog::_export_path_changed(const String &p_string) {
+void ProjectExportDialog::set_export_path(const String &p_value) {
+ Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current());
+ ERR_FAIL_COND(current.is_null());
+
+ current->set_export_path(p_value);
+}
+
+String ProjectExportDialog::get_export_path() {
+ Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current());
+ ERR_FAIL_COND_V(current.is_null(), String(""));
+
+ return current->get_export_path();
+}
+
+void ProjectExportDialog::_export_path_changed(const StringName &p_property, const Variant &p_value) {
if (updating)
return;
@@ -465,7 +489,7 @@ void ProjectExportDialog::_export_path_changed(const String &p_string) {
Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current());
ERR_FAIL_COND(current.is_null());
- current->set_export_path(p_string);
+ current->set_export_path(p_value);
_update_presets();
}
@@ -954,6 +978,10 @@ void ProjectExportDialog::_bind_methods() {
ClassDB::bind_method("_export_all_dialog_action", &ProjectExportDialog::_export_all_dialog_action);
ClassDB::bind_method("_custom_features_changed", &ProjectExportDialog::_custom_features_changed);
ClassDB::bind_method("_tab_changed", &ProjectExportDialog::_tab_changed);
+ ClassDB::bind_method("set_export_path", &ProjectExportDialog::set_export_path);
+ ClassDB::bind_method("get_export_path", &ProjectExportDialog::get_export_path);
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "export_path"), "set_export_path", "get_export_path");
}
ProjectExportDialog::ProjectExportDialog() {
@@ -1006,9 +1034,12 @@ ProjectExportDialog::ProjectExportDialog() {
runnable->connect("pressed", this, "_runnable_pressed");
settings_vb->add_child(runnable);
- export_path = memnew(LineEdit);
- settings_vb->add_margin_child(TTR("Export Path:"), export_path);
- export_path->connect("text_changed", this, "_export_path_changed");
+ export_path = memnew(EditorPropertyPath);
+ settings_vb->add_child(export_path);
+ export_path->set_label(TTR("Export Path"));
+ export_path->set_object_and_property(this, "export_path");
+ export_path->set_save_mode();
+ export_path->connect("property_changed", this, "_export_path_changed");
sections = memnew(TabContainer);
sections->set_tab_align(TabContainer::ALIGN_LEFT);
@@ -1100,7 +1131,7 @@ ProjectExportDialog::ProjectExportDialog() {
//disable by default
name->set_editable(false);
- export_path->set_editable(false);
+ export_path->hide();
runnable->set_disabled(true);
duplicate_preset->set_disabled(true);
delete_preset->set_disabled(true);
@@ -1143,6 +1174,7 @@ ProjectExportDialog::ProjectExportDialog() {
export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected");
export_error = memnew(Label);
+ export_error->set_autowrap(true);
main_vb->add_child(export_error);
export_error->hide();
export_error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
diff --git a/editor/project_export.h b/editor/project_export.h
index 7009968138..b43dd9a392 100644
--- a/editor/project_export.h
+++ b/editor/project_export.h
@@ -37,6 +37,7 @@
#include "editor/editor_file_dialog.h"
#include "editor/editor_file_system.h"
#include "editor/editor_inspector.h"
+#include "editor/editor_properties.h"
#include "scene/gui/button.h"
#include "scene/gui/check_button.h"
#include "scene/gui/control.h"
@@ -66,7 +67,7 @@ private:
ItemList *presets;
LineEdit *name;
- LineEdit *export_path;
+ EditorPropertyPath *export_path;
EditorInspector *parameters;
CheckButton *runnable;
@@ -110,7 +111,7 @@ private:
void _runnable_pressed();
void _update_parameters(const String &p_edited_property);
void _name_changed(const String &p_string);
- void _export_path_changed(const String &p_string);
+ void _export_path_changed(const StringName &p_property, const Variant &p_value);
void _add_preset(int p_platform);
void _edit_preset(int p_index);
void _duplicate_preset();
@@ -162,6 +163,9 @@ protected:
public:
void popup_export();
+ void set_export_path(const String &p_value);
+ String get_export_path();
+
ProjectExportDialog();
~ProjectExportDialog();
};
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 8c906e5f0b..0e2e957333 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -745,7 +745,8 @@ public:
get_ok()->set_text(TTR("Create & Edit"));
name_container->show();
install_path_container->hide();
- project_name->grab_focus();
+ project_name->call_deferred("grab_focus");
+ project_name->call_deferred("select_all");
} else if (mode == MODE_INSTALL) {
@@ -866,16 +867,22 @@ struct ProjectItem {
uint64_t last_modified;
bool favorite;
bool grayed;
+ bool ordered_latest_modification;
ProjectItem() {}
- ProjectItem(const String &p_project, const String &p_path, const String &p_conf, uint64_t p_last_modified, bool p_favorite = false, bool p_grayed = false) {
+ ProjectItem(const String &p_project, const String &p_path, const String &p_conf, uint64_t p_last_modified, bool p_favorite = false, bool p_grayed = false, const bool p_ordered_latest_modification = true) {
project = p_project;
path = p_path;
conf = p_conf;
last_modified = p_last_modified;
favorite = p_favorite;
grayed = p_grayed;
+ ordered_latest_modification = p_ordered_latest_modification;
+ }
+ _FORCE_INLINE_ bool operator<(const ProjectItem &l) const {
+ if (ordered_latest_modification)
+ return last_modified > l.last_modified;
+ return project < l.project;
}
- _FORCE_INLINE_ bool operator<(const ProjectItem &l) const { return last_modified > l.last_modified; }
_FORCE_INLINE_ bool operator==(const ProjectItem &l) const { return project == l.project; }
};
@@ -1156,6 +1163,13 @@ void ProjectManager::_load_recent_projects() {
Color font_color = gui_base->get_color("font_color", "Tree");
+ bool set_ordered_latest_modification;
+ ProjectListFilter::FilterOption filter_order_option = project_order_filter->get_filter_option();
+ if (filter_order_option == ProjectListFilter::FILTER_NAME)
+ set_ordered_latest_modification = false;
+ else
+ set_ordered_latest_modification = true;
+
List<ProjectItem> projects;
List<ProjectItem> favorite_projects;
@@ -1188,13 +1202,12 @@ void ProjectManager::_load_recent_projects() {
grayed = true;
}
- ProjectItem item(project, path, conf, last_modified, favorite, grayed);
+ ProjectItem item(project, path, conf, last_modified, favorite, grayed, set_ordered_latest_modification);
if (favorite)
favorite_projects.push_back(item);
else
projects.push_back(item);
}
-
projects.sort();
favorite_projects.sort();
@@ -1818,16 +1831,41 @@ ProjectManager::ProjectManager() {
tabs->add_child(tree_hb);
VBoxContainer *search_tree_vb = memnew(VBoxContainer);
- search_tree_vb->set_h_size_flags(SIZE_EXPAND_FILL);
tree_hb->add_child(search_tree_vb);
+ search_tree_vb->set_h_size_flags(SIZE_EXPAND_FILL);
- HBoxContainer *search_box = memnew(HBoxContainer);
- search_box->add_spacer(true);
+ HBoxContainer *sort_filters = memnew(HBoxContainer);
+ Label *sort_label = memnew(Label);
+ sort_label->set_text(TTR("Sort:"));
+ sort_filters->add_child(sort_label);
+ Vector<String> vec1;
+ vec1.push_back("Name");
+ vec1.push_back("Last Modified");
+ project_order_filter = memnew(ProjectListFilter);
+ project_order_filter->_setup_filters(vec1);
+ project_order_filter->set_filter_size(150);
+ sort_filters->add_child(project_order_filter);
+ project_order_filter->connect("filter_changed", this, "_load_recent_projects");
+ project_order_filter->set_custom_minimum_size(Size2(180, 10) * EDSCALE);
+
+ sort_filters->add_spacer(true);
+ Label *search_label = memnew(Label);
+ search_label->set_text(TTR("Search:"));
+ sort_filters->add_child(search_label);
+
+ HBoxContainer *search_filters = memnew(HBoxContainer);
+ Vector<String> vec2;
+ vec2.push_back("Name");
+ vec2.push_back("Path");
project_filter = memnew(ProjectListFilter);
- search_box->add_child(project_filter);
+ project_filter->_setup_filters(vec2);
+ project_filter->add_search_box();
+ search_filters->add_child(project_filter);
project_filter->connect("filter_changed", this, "_load_recent_projects");
project_filter->set_custom_minimum_size(Size2(280, 10) * EDSCALE);
- search_tree_vb->add_child(search_box);
+ sort_filters->add_child(search_filters);
+
+ search_tree_vb->add_child(sort_filters);
PanelContainer *pc = memnew(PanelContainer);
pc->add_style_override("panel", gui_base->get_stylebox("bg", "Tree"));
@@ -2017,11 +2055,11 @@ ProjectManager::~ProjectManager() {
EditorSettings::destroy();
}
-void ProjectListFilter::_setup_filters() {
+void ProjectListFilter::_setup_filters(Vector<String> options) {
filter_option->clear();
- filter_option->add_item(TTR("Name"));
- filter_option->add_item(TTR("Path"));
+ for (int i = 0; i < options.size(); i++)
+ filter_option->add_item(TTR(options[i]));
}
void ProjectListFilter::_search_text_changed(const String &p_newtext) {
@@ -2046,7 +2084,7 @@ void ProjectListFilter::_filter_option_selected(int p_idx) {
void ProjectListFilter::_notification(int p_what) {
- if (p_what == NOTIFICATION_ENTER_TREE) {
+ if (p_what == NOTIFICATION_ENTER_TREE && has_search_box) {
search_box->set_right_icon(get_icon("Search", "EditorIcons"));
search_box->set_clear_button_enabled(true);
}
@@ -2060,20 +2098,27 @@ void ProjectListFilter::_bind_methods() {
ADD_SIGNAL(MethodInfo("filter_changed"));
}
+void ProjectListFilter::add_search_box() {
+ search_box = memnew(LineEdit);
+ search_box->connect("text_changed", this, "_search_text_changed");
+ search_box->set_h_size_flags(SIZE_EXPAND_FILL);
+ add_child(search_box);
+ has_search_box = true;
+}
+
+void ProjectListFilter::set_filter_size(int h_size) {
+ filter_option->set_custom_minimum_size(Size2(h_size * EDSCALE, 10 * EDSCALE));
+}
+
ProjectListFilter::ProjectListFilter() {
_current_filter = FILTER_NAME;
filter_option = memnew(OptionButton);
- filter_option->set_custom_minimum_size(Size2(80 * EDSCALE, 10 * EDSCALE));
+ set_filter_size(80);
filter_option->set_clip_text(true);
filter_option->connect("item_selected", this, "_filter_option_selected");
add_child(filter_option);
- _setup_filters();
-
- search_box = memnew(LineEdit);
- search_box->connect("text_changed", this, "_search_text_changed");
- search_box->set_h_size_flags(SIZE_EXPAND_FILL);
- add_child(search_box);
+ has_search_box = false;
}
diff --git a/editor/project_manager.h b/editor/project_manager.h
index ad21e00b0d..88fc081272 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -54,6 +54,7 @@ class ProjectManager : public Control {
EditorAssetLibrary *asset_library;
ProjectListFilter *project_filter;
+ ProjectListFilter *project_order_filter;
ConfirmationDialog *language_restart_ask;
ConfirmationDialog *erase_ask;
@@ -130,6 +131,7 @@ private:
OptionButton *filter_option;
LineEdit *search_box;
+ bool has_search_box;
enum FilterOption {
FILTER_NAME,
@@ -138,7 +140,6 @@ private:
FilterOption _current_filter;
void _search_text_changed(const String &p_newtext);
- void _setup_filters();
void _filter_option_selected(int p_idx);
protected:
@@ -146,6 +147,9 @@ protected:
static void _bind_methods();
public:
+ void _setup_filters(Vector<String> options);
+ void add_search_box();
+ void set_filter_size(int h_size);
String get_search_term();
FilterOption get_filter_option();
ProjectListFilter();
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 7a68646f40..af8d33d3d1 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -115,10 +115,9 @@ void ProjectSettingsEditor::_notification(int p_what) {
} break;
case NOTIFICATION_POPUP_HIDE: {
- EditorSettings::get_singleton()->set("interface/dialogs/project_settings_bounds", get_rect());
+ EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "project_settings", get_rect());
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
-
search_button->set_icon(get_icon("Search", "EditorIcons"));
search_box->set_right_icon(get_icon("Search", "EditorIcons"));
search_box->set_clear_button_enabled(true);
@@ -788,8 +787,9 @@ void ProjectSettingsEditor::_update_actions() {
void ProjectSettingsEditor::popup_project_settings() {
// Restore valid window bounds or pop up at default size.
- if (EditorSettings::get_singleton()->has_setting("interface/dialogs/project_settings_bounds")) {
- popup(EditorSettings::get_singleton()->get("interface/dialogs/project_settings_bounds"));
+ Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "project_settings", Rect2());
+ if (saved_size != Rect2()) {
+ popup(saved_size);
} else {
Size2 popup_size = Size2(900, 700) * editor_get_scale();
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index 537c9ac6b8..a4956bee27 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -94,8 +94,9 @@ void EditorSettingsDialog::popup_edit_settings() {
set_process_unhandled_input(true);
// Restore valid window bounds or pop up at default size.
- if (EditorSettings::get_singleton()->has_setting("interface/dialogs/editor_settings_bounds")) {
- popup(EditorSettings::get_singleton()->get("interface/dialogs/editor_settings_bounds"));
+ Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "editor_settings", Rect2());
+ if (saved_size != Rect2()) {
+ popup(saved_size);
} else {
Size2 popup_size = Size2(900, 700) * editor_get_scale();
@@ -132,7 +133,7 @@ void EditorSettingsDialog::_notification(int p_what) {
_update_icons();
} break;
case NOTIFICATION_POPUP_HIDE: {
- EditorSettings::get_singleton()->set("interface/dialogs/editor_settings_bounds", get_rect());
+ EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "editor_settings", get_rect());
set_process_unhandled_input(false);
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
diff --git a/editor/translations/af.po b/editor/translations/af.po
index 17dd7b19c5..6bad509c26 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -7,15 +7,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-09-14 16:12+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: Julius Stopforth <jjstopforth@gmail.com>\n"
"Language-Team: Afrikaans <https://hosted.weblate.org/projects/godot-engine/"
"godot/af/>\n"
"Language: af\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -261,7 +263,6 @@ msgstr "Skep %d NUWE bane en voeg sleutels by?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -535,15 +536,19 @@ msgstr "Vervang Alles"
msgid "Selection Only"
msgstr "Slegs Seleksie"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoem In"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoem Uit"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Herset Zoem"
@@ -552,9 +557,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "Zoem In"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -721,8 +725,8 @@ msgid "Recent:"
msgstr "Onlangse:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Soek:"
@@ -773,8 +777,7 @@ msgid "Resource"
msgstr "Hulpbron"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pad"
@@ -1240,8 +1243,7 @@ msgid "Node Name:"
msgstr "Nodus Naam:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Naam"
@@ -1726,6 +1728,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2125,7 +2133,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2149,7 +2157,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2561,6 +2569,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2577,8 +2591,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3002,7 +3015,7 @@ msgstr "Dupliseer"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3139,7 +3152,7 @@ msgstr "AutoLaai '%s' bestaan reeds!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ongeldige naam."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3390,44 +3403,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Skep Intekening"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Skep Intekening"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Skep"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3473,16 +3487,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Skep"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3560,7 +3564,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4107,7 +4110,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4256,21 +4259,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zoem Uit"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zoem Uit"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zoem In"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4526,7 +4527,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Skep Intekening"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4628,35 +4638,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5024,6 +5008,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5051,6 +5040,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5066,11 +5059,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5127,6 +5115,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5138,7 +5130,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5181,7 +5179,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Skep Intekening"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5206,12 +5213,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Skep Intekening"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Skuif Gunsteling Op"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5238,19 +5241,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5393,20 +5396,24 @@ msgid "Error saving file!"
msgstr "Fout tydens storing van hulpbron!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Fout tydens stoor."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Fout terwyl laai:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Fout terwyl laai:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Fout terwyl laai:"
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5427,6 +5434,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5467,8 +5482,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "Oop"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5497,15 +5513,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Ek sien..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5615,6 +5632,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Maak Funksie"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5647,10 +5668,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6349,11 +6366,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6594,12 +6616,12 @@ msgid "Clear transform"
msgstr "Anim Verander Transform"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Skuif huidige baan op."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6611,13 +6633,32 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Skep Intekening"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6647,16 +6688,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Skrap gekose lêers?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Skep Vouer"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Skep Intekening"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Skep Vouer"
@@ -6674,11 +6726,18 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Skep Vouer"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6694,6 +6753,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6730,7 +6793,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8189,7 +8252,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9042,7 +9105,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9085,7 +9148,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9177,6 +9242,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9193,6 +9262,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9249,10 +9322,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9269,6 +9338,18 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zoem Uit"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zoem In"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zoem In"
+
#~ msgid "Class List:"
#~ msgstr "Klas Lys:"
@@ -9331,9 +9412,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Anim Baan Verander Terug Draai Modus"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Wysig Nodus Kurwe"
-
#~ msgid "Anim Add Key"
#~ msgstr "Anim Voeg Sleutel By"
@@ -9395,9 +9473,6 @@ msgstr ""
#~ msgid "Thanks!"
#~ msgstr "Dankie!"
-#~ msgid "I see..."
-#~ msgstr "Ek sien..."
-
#~ msgid "Can't open '%s'."
#~ msgstr "Kan nie '%s' oopmaak nie."
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index ed3b98016a..777addc6ae 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -21,19 +21,22 @@
# Takai Eddine Kennouche <takai.kenn@gmail.com>, 2018.
# Mohamed El-Baz <albaz2000eg@gmail.com>, 2018.
# عاصم شكر - Aasem shokr <aasemshokr@gmail.com>, 2018.
+# Mohammad Fares <mhdchehade@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-18 22:43+0000\n"
-"Last-Translator: عاصم شكر - Aasem shokr <aasemshokr@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
+"Last-Translator: Mohammad Fares <mhdchehade@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -52,7 +55,7 @@ msgstr ""
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr ""
+msgstr "لا يمكن استخدام الحالة لأن لحظة التشغيل عدم (لم بتم ارسالها)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -60,7 +63,7 @@ msgstr ""
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr ""
+msgstr "الرمز غير متاح للنوع %s للنوع الصل %s"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
@@ -73,7 +76,7 @@ msgstr "نوع برهان خاطئ للتحويل()، إستخدم ثابت TYPE
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr ""
+msgstr "عند نداء '%s':"
#: editor/animation_bezier_editor.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -273,7 +276,6 @@ msgstr "أنشئ %d مسارات جديدة Ùˆ أدخل Ù…Ùاتيح؟"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -549,15 +551,19 @@ msgstr "إستبدال الكل"
msgid "Selection Only"
msgstr "المحدد Ùقط"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "تقريب"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "إبعاد"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "إرجاع التكبير"
@@ -567,8 +573,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "تقريب"
+msgid "Font Size:"
+msgstr "حجم الخطوط:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -733,8 +739,8 @@ msgid "Recent:"
msgstr "الحالي:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "بحث:"
@@ -785,8 +791,7 @@ msgid "Resource"
msgstr "مورد"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "المسار"
@@ -1245,8 +1250,7 @@ msgid "Node Name:"
msgstr "إسم العقدة:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "الأسم"
@@ -1729,6 +1733,12 @@ msgstr "هذه العملية لا يمكنها الإكتمال من غير جØ
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr "لا يمكن Ø­Ùظ المشهد. على الأرجح لا يمكن إستيÙاء التبعيات (مجسّدات)."
@@ -2163,7 +2173,7 @@ msgid "Undo"
msgstr "تراجع"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "إعادة"
@@ -2187,7 +2197,7 @@ msgstr "إعدادات المشروع"
msgid "Export"
msgstr "تصدير"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ادوات"
@@ -2623,6 +2633,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2639,8 +2655,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3068,7 +3083,7 @@ msgstr "تكرير..."
msgid "Move To..."
msgstr "تحريك إلي..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Ùتح سريع للكود..."
@@ -3211,7 +3226,7 @@ msgstr "خطأ: إسم الحركة موجود بالÙعل!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "اسم غير صالح."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3467,14 +3482,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "إنشاء بولي"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "تعديل البولي"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3482,25 +3497,28 @@ msgid "Insert Point"
msgstr "إدخال نقطة"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "تعديل البولي (مسح النقطة)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "مسح البولي والنقطة"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "إنشاء Ù…Ùضلع جديد من الصÙر"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "مسح النقاط"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"تعديل المضلعات الموجودة:\n"
"زر الÙأرة الأيسر: لتحريك النقطة.\n"
@@ -3508,8 +3526,10 @@ msgstr ""
"زر الÙأرة الأيمن: مسح النقطة."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "مسح النقاط"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "زر الÙأرة الأيمن: مسح النقطة."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3554,17 +3574,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "مسح النقاط"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "زر الÙأرة الأيمن: مسح النقطة."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3642,7 +3651,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4192,7 +4200,7 @@ msgstr "الكل"
msgid "Plugins"
msgstr "إضاÙات"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "ترتيب:"
@@ -4352,21 +4360,19 @@ msgid "Paste Pose"
msgstr "لصق الوضع"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "إبعاد"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "إبعاد"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "تقريب"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "تحديد الوضع"
@@ -4630,8 +4636,17 @@ msgstr ""
"سحب و إسقاط + Alt : تغيير نوع العقدة"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "إنشاء بولي 3d"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "إنشاء بولي"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "تعديل البولي"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "تعديل البولي (مسح النقطة)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4733,37 +4748,9 @@ msgid "Item List Editor"
msgstr "Ù…Ùعدل قائمة العناصر"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"لا مصدر شكل Ù…Ùطبق 2D ÙÙŠ هذه العقدة.\n"
-"أنشئ و ضع واحدة؟"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "أنشئ شكل Ù…Ùطبق"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "أنشئ شكل جديد من لا شئ."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "تعديل الشكل الموجود بالÙعل:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "زر الÙأرة الأوسط: تحريك النقطة."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+ زر الÙأرة الأوسط: Ùصل المقطع."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "زر الÙأرة الأيمن: مسح النقطة."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "الميش Ùارغ!"
@@ -5134,6 +5121,11 @@ msgid "Add Point to Curve"
msgstr "أض٠نقطة للمنحنى"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "تحرير منحنى العقدة"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "حرك النقطة داخل المنحنى"
@@ -5161,6 +5153,10 @@ msgid "Click: Add Point"
msgstr "إظغط: أض٠نقطة"
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5176,11 +5172,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5238,6 +5229,10 @@ msgstr "مسح نقطة خروج التحكم"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5250,10 +5245,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "إظهار العظام"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr ""
@@ -5295,10 +5296,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "إنشاء بولي"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Ùتح المÙعدل 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5322,12 +5333,8 @@ msgstr "أنشئ عظام"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "إنشاء بولي"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "مسح النقطة"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5354,19 +5361,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5515,20 +5522,24 @@ msgid "Error saving file!"
msgstr "خطأ ÙÙŠ Ø­Ùظ مجموعة البلاط!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "خطأ خلال الحÙظ."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "خطأ ÙÙŠ تحريك:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "خطأ ÙÙŠ تحريك:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "خطأ ÙÙŠ تحريك:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5550,6 +5561,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5591,8 +5610,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "إظهار الملÙات"
+msgid "Open..."
+msgstr "Ø¥Ùتح"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5621,15 +5640,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "حاري إستيراد المشهد..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5740,6 +5760,10 @@ msgstr ""
msgid "Go to Function"
msgstr "مسح المهمة"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5772,10 +5796,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6482,11 +6502,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "حدد المعامل"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6737,12 +6763,12 @@ msgid "Clear transform"
msgstr "تحويل تغيير التحريك"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "مسح المدخلة الحالية"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6754,13 +6780,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "لصق الحركة"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "زر الÙأرة الأيمن: مسح النقطة."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "أنشئ شكل جديد من لا شئ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6790,16 +6837,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "إمسح الملÙات المحددة؟"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Ø­Ùظ العنوان الÙرعي الذي يتم تعديله حاليا."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "مسح النقاط"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Ø­Ùظ العنوان الÙرعي الذي يتم تعديله حاليا."
@@ -6818,11 +6876,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Ø­Ùظ العنوان الÙرعي الذي يتم تعديله حاليا."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "هذه العملية لا يمكن الإكتمال من غير مشهد."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "مجموعة البلاط"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6839,6 +6905,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6877,7 +6947,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "تصدير المشروع"
#: editor/project_export.cpp
@@ -8348,7 +8418,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "الخطوة (المتغيرة المدخلة/argument) تساوي صÙر !"
#: modules/gdscript/gdscript_functions.cpp
@@ -9208,7 +9279,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9251,7 +9322,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9344,6 +9417,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "شجرة الحركة خاطئة."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9360,6 +9437,10 @@ msgstr "تنبيه!"
msgid "Please Confirm..."
msgstr "يرجى التاكيد..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9417,10 +9498,6 @@ msgstr "حجم الخط غير صالح"
msgid "Input"
msgstr "أض٠مدخله"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9438,6 +9515,50 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "إنشاء بولي"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "إنشاء Ù…Ùضلع جديد من الصÙر"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "إبعاد"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "تقريب"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "إنشاء بولي 3d"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "لا مصدر شكل Ù…Ùطبق 2D ÙÙŠ هذه العقدة.\n"
+#~ "أنشئ و ضع واحدة؟"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "تعديل الشكل الموجود بالÙعل:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "زر الÙأرة الأوسط: تحريك النقطة."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+ زر الÙأرة الأوسط: Ùصل المقطع."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "زر الÙأرة الأيمن: مسح النقطة."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "إظهار الملÙات"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "تقريب"
+
#~ msgid "Class List:"
#~ msgstr "قائمة الأصناÙ:"
@@ -9523,9 +9644,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "تغيير صيغة الغلا٠لمسار التحريك"
-#~ msgid "Edit Node Curve"
-#~ msgstr "تحرير منحنى العقدة"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "تحرير منحنى الإختيار"
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 60f5eafb45..aa770bcea5 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -10,15 +10,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-20 11:23+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: PakoSt <kokotekilata@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/bg/>\n"
"Language: bg\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -261,7 +263,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -535,15 +536,19 @@ msgstr "Преименувай Ð’Ñички"
msgid "Selection Only"
msgstr "Само СелекциÑта"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Приближи"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Отдалечи"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -552,8 +557,9 @@ msgid "Warnings:"
msgstr "ПредупреждениÑ:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Приближение:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "Изглед Отпред."
#: editor/code_editor.cpp
msgid "Line:"
@@ -712,8 +718,8 @@ msgid "Recent:"
msgstr "Скорошни:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "ТърÑене:"
@@ -760,8 +766,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1216,8 +1221,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1692,6 +1696,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2098,7 +2108,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2122,7 +2132,7 @@ msgstr "ÐаÑтройки на проекта"
msgid "Export"
msgstr "ИзнаÑÑне"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Сечива"
@@ -2539,6 +2549,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2555,8 +2571,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Ðов Ñкрипт"
@@ -2991,7 +3006,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Ðов Ñкрипт"
@@ -3125,7 +3140,8 @@ msgid "Group name already exists."
msgstr "Група Ñ Ñ‚Ð¾Ð²Ð° име вече ÑъщеÑтвува."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "невалидно име на Група."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3395,41 +3411,41 @@ msgid "Activate now?"
msgstr "Ðктивирай Ñега?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Създаване на папка"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "ПриÑтавки"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "ПремеÑтване на Полигон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Създай точки."
#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Промени ÑъщеÑтвуващ полигон:\n"
"LMB: ПремеÑти Точка.\n"
@@ -3437,9 +3453,9 @@ msgstr ""
"RMB: Изтрии Точка."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
-msgid "Delete points"
-msgstr "Изтриване на анимациÑта?"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Изтрий точки."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3484,15 +3500,6 @@ msgstr "Селектирай и меÑти точки, Ñъздай точки Ñ
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Създай точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Изтрий точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3571,7 +3578,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Добави Възел..."
@@ -4118,7 +4124,7 @@ msgstr "Ð’Ñички"
msgid "Plugins"
msgstr "ПриÑтавки"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Подреждане:"
@@ -4269,18 +4275,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Отдалечи"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Оригинално увеличение"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Приближи"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Режим на Селектиране"
@@ -4541,7 +4548,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Създаване на папка"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4644,36 +4660,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create a new polygon from scratch."
-msgstr "Създай нов полигон от нулата."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Промени ÑъщеÑтвуващ полигон:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: ПремеÑти Точка."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Раздели Сегмент."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Изтрий Точка."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5041,6 +5030,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5068,6 +5061,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5083,11 +5080,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Изтрий Точка"
@@ -5144,6 +5136,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5154,7 +5150,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5195,7 +5197,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Създаване на папка"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5220,12 +5231,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Създаване на папка"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "LMB: ПремеÑти Точка."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -5253,19 +5260,21 @@ msgid "Scale Polygon"
msgstr "Мащаб на Полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Свържи две точки, за да направиш разделение"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Избери разделение и го изтрий"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5405,20 +5414,23 @@ msgid "Error saving file!"
msgstr "Грешка при запиÑването на файла!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Грешка при запиÑване."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Грешка при запазване"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr "Грешка при внаÑÑне на темата"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Имаше грешка при внаÑÑнето"
#: editor/plugins/script_editor_plugin.cpp
@@ -5438,6 +5450,14 @@ msgid "Import Theme"
msgstr "ВнаÑÑне на тема"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Грешка при запазване"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Запази Темата Като..."
@@ -5480,8 +5500,8 @@ msgstr "Файл"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Ðов TextFile"
+msgid "Open..."
+msgstr "Отвори"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5510,6 +5530,11 @@ msgid "Theme"
msgstr "Тема"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "ВнаÑÑне на тема"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Зареди Темата наново"
@@ -5518,10 +5543,6 @@ msgid "Save Theme"
msgstr "Запази Темата"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Запази Темата Като"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Затвори ДокументациÑта"
@@ -5630,6 +5651,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Отиди на Ред"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5662,10 +5687,6 @@ msgstr "Ð’ÑÑка дума Ñ Ð“Ð»Ð°Ð²Ð½Ð° буква"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6366,11 +6387,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6614,12 +6640,12 @@ msgid "Clear transform"
msgstr "ИзнаÑÑне към платформа"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "ПремеÑтване на пътечката нагоре."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6631,13 +6657,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "ПоÑтавÑне на възелите"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Изтрий точки."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Създай нов полигон от нулата."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6667,16 +6714,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Изтрий избраните файлове?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Избиране на текущата папка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Изтриване на анимациÑта?"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Избиране на текущата папка"
@@ -6694,12 +6752,19 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Избиране на текущата папка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "Файл:"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6715,6 +6780,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Добави Възел..."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6753,7 +6823,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "ИзнаÑÑне на проекта"
#: editor/project_export.cpp
@@ -8248,7 +8318,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Стъпката на range() е нула!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9147,7 +9218,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9192,7 +9263,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "PathFollow2D работи Ñамо когато е наÑледник на Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9283,6 +9356,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9299,6 +9376,10 @@ msgstr "Тревога!"
msgid "Please Confirm..."
msgstr "МолÑ, потвърдете..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9355,10 +9436,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9375,6 +9452,31 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Zoom out"
+#~ msgstr "Отдалечи"
+
+#~ msgid "Zoom in"
+#~ msgstr "Приближи"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Промени ÑъщеÑтвуващ полигон:"
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Раздели Сегмент."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Изтрий Точка."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Ðов TextFile"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Запази Темата Като"
+
+#~ msgid "Zoom:"
+#~ msgstr "Приближение:"
+
#~ msgid "Class List:"
#~ msgstr "СпиÑък на КлаÑове:"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index ae6a8a7f70..6ffe50143f 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -10,15 +10,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-11-29 08:11+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: Abdullah Zubair <abdullahzubair109@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/"
"godot/bn/>\n"
"Language: bn\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -275,7 +277,6 @@ msgstr "%d à¦à¦° জনà§à¦¯ নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমà
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -553,15 +554,19 @@ msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à
msgid "Selection Only"
msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ ইন)"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¨/সংকোচন অপসারণ করà§à¦¨ (রিসেট জà§à¦®à§)"
@@ -572,8 +577,8 @@ msgstr "সতরà§à¦•à¦¤à¦¾"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "জà§à¦®à§ (%):"
+msgid "Font Size:"
+msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -742,8 +747,8 @@ msgid "Recent:"
msgstr "সামà§à¦ªà§à¦°à¦¤à¦¿à¦•:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
@@ -794,8 +799,7 @@ msgid "Resource"
msgstr "রিসোরà§à¦¸"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "পথ"
@@ -1263,8 +1267,7 @@ msgid "Node Name:"
msgstr "নোডের নাম:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "নাম"
@@ -1768,6 +1771,12 @@ msgid "This operation can't be done without a tree root."
msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
#: editor/editor_node.cpp
+msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
@@ -2219,7 +2228,7 @@ msgid "Undo"
msgstr "সাবেক অবসà§à¦¥à¦¾à§Ÿ যান/আনডà§"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "পà§à¦¨à¦°à¦¾à¦¯à¦¼ করà§à¦¨"
@@ -2244,7 +2253,7 @@ msgstr "পà§à¦°à¦•à¦²à§à¦ªà§‡à¦° সেটিংস"
msgid "Export"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "সরঞà§à¦œà¦¾à¦®-সমূহ"
@@ -2700,6 +2709,12 @@ msgstr "নিযà§à¦•à§à¦¤"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2717,8 +2732,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "১ টি Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
@@ -3198,7 +3212,7 @@ msgstr "ডà§à¦ªà§à¦²à¦¿à¦•à§‡à¦Ÿ"
msgid "Move To..."
msgstr "à¦à¦–ানে সরান..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
@@ -3341,7 +3355,7 @@ msgstr "ভà§à¦²: অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নাম ইতিমà¦
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম।"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3609,14 +3623,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Poly তৈরি করà§à¦¨"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3625,26 +3639,28 @@ msgid "Insert Point"
msgstr "সনà§à¦¨à¦¿à¦¬à§‡à¦¶à¦¿à¦¤ হচà§à¦›à§‡"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (বিনà§à¦¦à§ অপসারণ করà§à¦¨)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "পলি à¦à¦¬à¦‚ বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create a new polygon from scratch"
-msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
+msgid "Create points."
+msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"তৈরিকৃত পলিগন à¦à¦¡à¦¿à¦Ÿ করà§à¦¨:\n"
"à¦à¦²à¦à¦®à¦¬à¦¿: পয়েনà§à¦Ÿ মà§à¦­ করà§à¦¨à¥¤\n"
@@ -3652,9 +3668,10 @@ msgstr ""
"আরà¦à¦®à¦¬à¦¿: পয়েনà§à¦Ÿ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
-msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
+msgid "Erase points."
+msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3700,17 +3717,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "বিনà§à¦¦à§ সরান"
@@ -3790,7 +3796,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "নোড সংযোজন করà§à¦¨"
@@ -4355,7 +4360,7 @@ msgstr "সকল"
msgid "Plugins"
msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "সাজান:"
@@ -4517,21 +4522,19 @@ msgid "Paste Pose"
msgstr "ভঙà§à¦—ি পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "জà§à¦®à§ পà§à¦¨:সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ ইন)"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "মোড (Mode) বাছাই করà§à¦¨"
@@ -4805,8 +4808,17 @@ msgstr ""
"টানà§à¦¨ à¦à¦¬à¦‚ ফেলà§à¦¨ + অলà§à¦Ÿà¦¾à¦° কী (Alt) : নোডের ধরণ পরিবরà§à¦¤à¦¨ করতে"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Poly3D তৈরি করà§à¦¨"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Poly তৈরি করà§à¦¨"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (বিনà§à¦¦à§ অপসারণ করà§à¦¨)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4921,37 +4933,9 @@ msgid "Item List Editor"
msgstr "বসà§à¦¤à§à¦° তালিকা à¦à¦¡à¦¿à¦Ÿà¦°"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"à¦à¦‡ নোডের মধà§à¦¯à§‡ কোন অকà§à¦²à§à¦¡à¦¾à¦° পলিগন টà§à¦¡à¦¿ রিসোরà§à¦¸ বিদà§à¦¯à¦®à¦¾à¦¨ নেই।\n"
-" নতà§à¦¨ পলিগন তৈরি করবেন?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "অকলà§à¦¡à¦¾à¦° (occluder) পলিগন তৈরি করà§à¦¨"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পলিগন সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "মাউসের বাম বোতাম: বিনà§à¦¦à§ সরান।"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² + মাউসের বাম বোতাম: অংশ বিভকà§à¦¤ করà§à¦¨à¥¤"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "মেসটি খালি!"
@@ -5335,6 +5319,11 @@ msgid "Add Point to Curve"
msgstr "বকà§à¦°à¦°à§‡à¦–ায় বিনà§à¦¦à§ যোগ করà§à¦¨"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "বকà§à¦°à¦°à§‡à¦–ায় বিনà§à¦¦à§ সরান"
@@ -5362,6 +5351,11 @@ msgid "Click: Add Point"
msgstr "কà§à¦²à¦¿à¦•: বিনà§à¦¦à§ যোগ করà§à¦¨"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "অংশ বিভকà§à¦¤ করà§à¦¨ (বকà§à¦°à¦°à§‡à¦–ায়)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "ডান কà§à¦²à¦¿à¦•: বিনà§à¦¦à§ অপসারণ করà§à¦¨"
@@ -5377,11 +5371,6 @@ msgstr "বিনà§à¦¦à§ যোগ করà§à¦¨ (শূনà§à¦¯à¦¸à§à¦¥à¦¾à¦
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "অংশ বিভকà§à¦¤ করà§à¦¨ (বকà§à¦°à¦°à§‡à¦–ায়)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
@@ -5443,6 +5432,10 @@ msgstr "বকà§à¦°à¦°à§‡à¦–া বহিঃ-নিয়নà§à¦¤à§à¦°à¦£à§‡
msgid "Remove In-Control Point"
msgstr "বকà§à¦°à¦°à§‡à¦–া আনà§à¦¤-নিয়নà§à¦¤à§à¦°à¦£à§‡ সরান"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "অংশ বিভকà§à¦¤ করà§à¦¨ (বকà§à¦°à¦°à§‡à¦–ায়)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5455,10 +5448,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "বোনà§â€Œ/হাড় দেখান"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "UV Map তৈরি করà§à¦¨"
@@ -5500,10 +5499,20 @@ msgid "Transform UV Map"
msgstr "UV Map রà§à¦ªà¦¾à¦¨à§à¦¤à¦° করà§à¦¨"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°à§‡à¦° ধরণ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV à¦à¦¡à¦¿à¦Ÿà¦°"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV à¦à¦¡à¦¿à¦Ÿà¦°"
@@ -5528,11 +5537,7 @@ msgstr "বোনà§â€Œ/হাড় তৈরি করà§à¦¨"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Poly তৈরি করà§à¦¨"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "বিনà§à¦¦à§ সরান"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5560,20 +5565,20 @@ msgid "Scale Polygon"
msgstr "পলিগন মাপ করà§à¦¨"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "à¦à¦•à¦Ÿà¦¿ সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5728,19 +5733,23 @@ msgid "Error saving file!"
msgstr "TileSet সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "থিম সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে"
#: editor/plugins/script_editor_plugin.cpp
@@ -5763,6 +5772,14 @@ msgid "Import Theme"
msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "থিম সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "থিম à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨..."
@@ -5805,8 +5822,8 @@ msgstr "ফাইল"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "ফাইল"
+msgid "Open..."
+msgstr "খà§à¦²à§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5836,6 +5853,11 @@ msgid "Theme"
msgstr "থিম"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "থিম রিলোড করà§à¦¨"
@@ -5844,10 +5866,6 @@ msgid "Save Theme"
msgstr "থিম সংরকà§à¦·à¦£ করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "থিম à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ বনà§à¦§ করà§à¦¨"
@@ -5960,6 +5978,10 @@ msgstr ""
msgid "Go to Function"
msgstr "ফাংশনে যান..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাইল সিসà§à¦Ÿà§‡à¦® থেকে রিসোরà§à¦¸ ডà§à¦°à¦ª করা সমà§à¦­à¦¬à¥¤"
@@ -5994,10 +6016,6 @@ msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ à¦
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6739,11 +6757,18 @@ msgid "Set Region Rect"
msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•à¦¾"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<নান/কিছà§à¦‡ না>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6998,12 +7023,12 @@ msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "শাখা (tree) হতে নোড (সমূহ) যà§à¦•à§à¦¤ করà§à¦¨"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -7015,13 +7040,34 @@ msgid "Merge from Scene"
msgstr "দৃশà§à¦¯ হতে à¦à¦•à¦¤à§à¦°à¦¿à¦¤ করবেন"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨ করà§à¦¨"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -7051,16 +7097,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ করবেন?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
@@ -7079,12 +7136,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet (টাইল-সেট)..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -7103,6 +7167,11 @@ msgstr "ডান"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "নোড সংযোজন করà§à¦¨"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "শেডার"
@@ -7148,7 +7217,7 @@ msgstr "সংযোগ..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° পà§à¦°à¦¿à¦¸à§‡à¦Ÿ:"
#: editor/project_export.cpp
@@ -8735,7 +8804,8 @@ msgid "GDNative"
msgstr "জিডিনà§à¦¯à¦¾à¦Ÿà¦¿à¦­"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "ধাপ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ শূনà§à¦¯!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9689,7 +9759,7 @@ msgstr ""
"আকৃতি তৈরি করà§à¦¨!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9739,7 +9809,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "PathFollow2D à¦à¦•à¦®à¦¾à¦¤à§à¦° Path2D à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করালেই কাজ করে।"
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9837,6 +9909,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° তালিকাটি অকারà§à¦¯à¦•à¦°à¥¤"
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -9854,6 +9930,10 @@ msgstr "সতরà§à¦•à¦¤à¦¾!"
msgid "Please Confirm..."
msgstr "অনà§à¦—à§à¦°à¦¹ করে নিশà§à¦šà¦¿à¦¤ করà§à¦¨..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9918,11 +9998,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
msgid "Input"
msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<নান/কিছà§à¦‡ না>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9940,6 +10015,57 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Poly তৈরি করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ ইন)"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Poly3D তৈরি করà§à¦¨"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "à¦à¦‡ নোডের মধà§à¦¯à§‡ কোন অকà§à¦²à§à¦¡à¦¾à¦° পলিগন টà§à¦¡à¦¿ রিসোরà§à¦¸ বিদà§à¦¯à¦®à¦¾à¦¨ নেই।\n"
+#~ " নতà§à¦¨ পলিগন তৈরি করবেন?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পলিগন সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "মাউসের বাম বোতাম: বিনà§à¦¦à§ সরান।"
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² + মাউসের বাম বোতাম: অংশ বিভকà§à¦¤ করà§à¦¨à¥¤"
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "ফাইল"
+
+#~ msgid "Save Theme As"
+#~ msgstr "থিম à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨"
+
+#~ msgid "<None>"
+#~ msgstr "<নান/কিছà§à¦‡ না>"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "জà§à¦®à§ (%):"
+
#~ msgid "Class List:"
#~ msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° তালিকা:"
@@ -10655,9 +10781,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "ফনà§à¦Ÿà§‡à¦° উৎস:"
-#~ msgid "Source Font Size:"
-#~ msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:"
-
#~ msgid "Dest Resource:"
#~ msgstr "রিসোরà§à¦¸à§‡à¦° গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨:"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 1b8fa8933c..ac7f336e45 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -9,15 +9,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-19 06:24+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: Roger Blanco Ribera <roger.blancoribera@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
"Language: ca\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -250,7 +252,6 @@ msgstr "Voleu crear %d NOVES pistes i inserir-hi claus?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -530,15 +531,19 @@ msgstr "Reemplaça-hoTot"
msgid "Selection Only"
msgstr "Selecció Només"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Apropa"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Allunya"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Reinicia el Zoom"
@@ -547,8 +552,9 @@ msgid "Warnings:"
msgstr "Avisos:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Zoom:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "Mida de la lletra:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -708,8 +714,8 @@ msgid "Recent:"
msgstr "Recents:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Cerca:"
@@ -760,8 +766,7 @@ msgid "Resource"
msgstr "Recurs"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Camí"
@@ -1227,8 +1232,7 @@ msgid "Node Name:"
msgstr "Nom del node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nom"
@@ -1711,6 +1715,12 @@ msgstr "Aquesta operació no es pot fer sense cap arrel d'arbre."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2154,7 +2164,7 @@ msgid "Undo"
msgstr "Desfés"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Refés"
@@ -2178,7 +2188,7 @@ msgstr "Configuració del Projecte"
msgid "Export"
msgstr "Exporta"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Eines"
@@ -2609,6 +2619,12 @@ msgstr "Assigna..."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2625,8 +2641,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Selecciona una Vista"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Script Nou"
@@ -3050,7 +3065,7 @@ msgstr "Duplica..."
msgid "Move To..."
msgstr "Mou cap a..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Script Nou..."
@@ -3180,7 +3195,8 @@ msgid "Group name already exists."
msgstr "Aquest grup ja existeix."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "El Nom del grup no és vàlid."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3428,14 +3444,14 @@ msgid "Activate now?"
msgstr "Activar ara?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Crea Polígon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Edita Polígon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3443,25 +3459,27 @@ msgid "Insert Point"
msgstr "Insereix un Punt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Edita el Polígon (Elimina un Punt)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Elimina el Polígon i el Punt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Crea un Polígon nou del no-res"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Crea punts."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Edita un Polígon existent:\n"
"Clic Esquerra: Mou un Punt.\n"
@@ -3469,8 +3487,9 @@ msgstr ""
"Clic Dreta: Elimina un Punt."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Elimina els Punts"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Elimina un Punt."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3518,15 +3537,6 @@ msgstr "Selecciona i mou els punts, crea punts fent clic dret."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Crea punts."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Elimina un Punt."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Punt"
@@ -3604,7 +3614,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Afegeix un Node"
@@ -4158,7 +4167,7 @@ msgstr "Tot"
msgid "Plugins"
msgstr "Connectors"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordena:"
@@ -4320,21 +4329,19 @@ msgid "Paste Pose"
msgstr "Enganxa Positura"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Allunya"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Allunya"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Apropa"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Mode de selecció"
@@ -4600,8 +4607,17 @@ msgstr ""
"Arrossegar i deixar anar + Maj: Canvia el tipus del node"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Crea un Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Crea Polígon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Edita Polígon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Edita el Polígon (Elimina un Punt)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4703,37 +4719,9 @@ msgid "Item List Editor"
msgstr "Editor de Llistes d'Elements"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"No s'ha trobat cap recurs de tipus OccluderPolygon2D en aquest node.\n"
-"Vol Crear i assignar-ne un ara?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crea un Polígon Oclusor"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crea un nou Polígon del no-res."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Edita un polígon existent:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Clic Esquerra: Mou un Punt."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + Clic Esquerra: Divideix el Segment."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Clic Dret: Eliminar un Punt."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "La malla és buida!"
@@ -5103,6 +5091,11 @@ msgid "Add Point to Curve"
msgstr "Afegeix un Punt a la Corba"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Tanca la Corba"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Mou un Punt de la Corba"
@@ -5130,6 +5123,11 @@ msgid "Click: Add Point"
msgstr "Clic: Afegeix un Punt"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Parteix el Segment (de la Corba)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Clic Dret: Elimina el Punt"
@@ -5145,11 +5143,6 @@ msgstr "Afegeix un Punt (en l'espai buit)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Parteix el Segment (de la Corba)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Elimina el Punt"
@@ -5206,6 +5199,10 @@ msgstr "Elimina el Punt Out-Control"
msgid "Remove In-Control Point"
msgstr "Elimina el Punt In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Parteix el Segment (de la Corba)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5218,10 +5215,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Mostra els Ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Crea un Mapa UV"
@@ -5263,10 +5266,20 @@ msgid "Transform UV Map"
msgstr "Transforma el Mapa UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipus de Transformació"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor d'UVs de Polígons 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor d'UVs de Polígons 2D"
@@ -5291,11 +5304,7 @@ msgstr "Crea els ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Crea Polígon"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Mou el Punt"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5323,20 +5332,20 @@ msgid "Scale Polygon"
msgstr "Escala el Polígon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Cal seleccionar un Element!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5486,19 +5495,23 @@ msgid "Error saving file!"
msgstr "Error en desar el TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Error en desar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Error en desar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Error en importar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Error en importar"
#: editor/plugins/script_editor_plugin.cpp
@@ -5521,6 +5534,14 @@ msgid "Import Theme"
msgstr "Importa un Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Error en desar el tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Error en desar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Desa el Tema com a..."
@@ -5562,8 +5583,8 @@ msgstr "Fitxer"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Visualitza Fitxers"
+msgid "Open..."
+msgstr "Obre"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5592,6 +5613,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importa un Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recarrega el Tema"
@@ -5600,10 +5626,6 @@ msgid "Save Theme"
msgstr "Desa el Tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Anomena i Desa el Tema"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Tanca la Documentació"
@@ -5713,6 +5735,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Vés a la Funció..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Només s'hi poden deixar caure Recursos del sistema de fitxers."
@@ -5746,10 +5772,6 @@ msgstr "Converteix a Majúscules"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6464,11 +6486,18 @@ msgid "Set Region Rect"
msgstr "Defineix la Regió Rectangular"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Estableix la Nansa"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Mode Imant:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Cap>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6713,12 +6742,12 @@ msgstr "Transforma"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Afegeix Nodes des d'Arbre"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Elimina l'entrada actual"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6730,15 +6759,34 @@ msgid "Merge from Scene"
msgstr "Combina-ho a partir de l'Escena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Selecciona una sub-tessel·la com a icona. També s'utilitzarà per les "
-"assignacions automàtiques no-vàlides de l'autotile."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Enganxa l'Animació"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Elimina un Punt."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Crea un nou Polígon del no-res."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6769,13 +6817,8 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"clic Esquerra: activa el bit\n"
-"clic Dreta: desactiva el bit."
+msgid "Delete selected Rect."
+msgstr "Voleu Esborrar els fitxers seleccionats?"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6786,6 +6829,21 @@ msgstr "Selecciona la sub-tessel·la en edició."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Delete polygon."
+msgstr "Elimina els Punts"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"clic Esquerra: activa el bit\n"
+"clic Dreta: desactiva el bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6803,11 +6861,19 @@ msgstr "Selecciona una sub-tessel·la per a modificar-ne la prioritat."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Selecciona una sub-tessel·la per a modificar-ne la prioritat."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Aquesta operació no pot dur-se a terme sense cap escena."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Tile Set"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6827,6 +6893,11 @@ msgstr "Dreta"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Afegeix un Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Ombreig"
@@ -6866,7 +6937,7 @@ msgstr "Afegeix..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Exporta Projecte"
#: editor/project_export.cpp
@@ -8396,7 +8467,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "L'argument 'step' és zero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9316,7 +9388,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr "Res és visible perquè no s'ha assignat cap Malla a cap pas de Dibuix."
#: scene/3d/cpu_particles.cpp
@@ -9367,7 +9439,9 @@ msgstr ""
"PathFollow2D només funciona si s'estableix com a fill d'un node Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9477,6 +9551,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "L'arbre d'animació no és vàlid."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Mode Cru"
@@ -9493,6 +9571,10 @@ msgstr "Ep!"
msgid "Please Confirm..."
msgstr "Confirmeu..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9562,11 +9644,6 @@ msgstr "La mida de la lletra no és vàlida."
msgid "Input"
msgstr "Afegeix una Entrada"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Cap>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9584,6 +9661,62 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Crea Polígon"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Crea un Polígon nou del no-res"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Allunya"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Apropa"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Crea un Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "No s'ha trobat cap recurs de tipus OccluderPolygon2D en aquest node.\n"
+#~ "Vol Crear i assignar-ne un ara?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Edita un polígon existent:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Clic Esquerra: Mou un Punt."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl + Clic Esquerra: Divideix el Segment."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Clic Dret: Eliminar un Punt."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Visualitza Fitxers"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Anomena i Desa el Tema"
+
+#~ msgid "<None>"
+#~ msgstr "<Cap>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Selecciona una sub-tessel·la com a icona. També s'utilitzarà per les "
+#~ "assignacions automàtiques no-vàlides de l'autotile."
+
+#~ msgid "Zoom:"
+#~ msgstr "Zoom:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Esteu segur que voleu eliminar totes les connexions de \""
@@ -10277,9 +10410,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "Lletra:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Mida de la lletra:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Recurs Objectiu:"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index f6bc57ed66..0c90480fbf 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -13,15 +13,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-21 19:07+0000\n"
-"Last-Translator: Jan 'spl!te' Kondelík <j.kondelik@centrum.cz>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
+"Last-Translator: Vojtěch Šamla <auzkok@seznam.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
"Language: cs\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -61,7 +63,7 @@ msgstr "Neplatné argumenty pro konstrukci '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr ""
+msgstr "Při volání '%s':"
#: editor/animation_bezier_editor.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -259,7 +261,6 @@ msgstr "VytvoÅ™it %d NOVÃCH stop a vložit klíÄe?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -499,7 +500,7 @@ msgstr "Změnit hodnotu pole"
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr "Běž na řádek"
+msgstr "Jít na řádek"
#: editor/code_editor.cpp
msgid "Line Number:"
@@ -533,15 +534,19 @@ msgstr "Nahradit všechny"
msgid "Selection Only"
msgstr "Pouze výběr"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Přiblížit"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Oddálit"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Obnovit původní přiblížení"
@@ -550,8 +555,9 @@ msgid "Warnings:"
msgstr "Varování:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Přiblížit:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "Pohled zepředu"
#: editor/code_editor.cpp
msgid "Line:"
@@ -665,9 +671,9 @@ msgid "Edit Connection: "
msgstr "Upravit připojení: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Jste si jisti, že chcete odstranit všechna připojení od \""
+msgstr ""
+"Jste si jisti, že chcete odstranit všechna připojení ze signálu \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -675,7 +681,7 @@ msgstr "Signály"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
+msgstr "Jste si jistí, že chcete odstranit všechna připojení z tohoto signálu?"
#: editor/connections_dialog.cpp
msgid "Disconnect All"
@@ -686,9 +692,8 @@ msgid "Edit..."
msgstr "Upravit..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Metody"
+msgstr "Přejít na metodu"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -713,8 +718,8 @@ msgid "Recent:"
msgstr "Nedávné:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Hledat:"
@@ -765,8 +770,7 @@ msgid "Resource"
msgstr "Zdroj"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Cesta"
@@ -1227,8 +1231,7 @@ msgid "Node Name:"
msgstr "Název uzlu:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Název"
@@ -1306,7 +1309,6 @@ msgid "File Exists, Overwrite?"
msgstr "Soubor už existuje. Přepsat?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Vybrat tuto složku"
@@ -1315,15 +1317,13 @@ msgid "Copy Path"
msgstr "Kopírovat cestu"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Otevřít ve správci souborů"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Ukázat ve správci souborů"
+msgstr "Zobrazit ve správci souborů"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1466,19 +1466,16 @@ msgid "Methods"
msgstr "Metody"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Metody"
+msgstr "Metody:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Vlastnosti"
+msgstr "Vlastnosti motivu"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Vlastnosti:"
+msgstr "Vlastnosti motivu:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1505,14 +1502,12 @@ msgid "Constants:"
msgstr "Konstanty:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Popis"
+msgstr "Popis třídy"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Popis:"
+msgstr "Popis třídy:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1529,12 +1524,10 @@ msgstr ""
"$url2]zažádat[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Popis vlastnosti:"
+msgstr "Popis vlastnosti"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "Popis vlastnosti:"
@@ -1547,12 +1540,10 @@ msgstr ""
"nám tím, že ho[color=$color][url=$url]vytvoříte[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Popis metody:"
+msgstr "Popis metody"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "Popis metody:"
@@ -1570,39 +1561,32 @@ msgid "Search Help"
msgstr "Prohledat nápovědu"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Nahradit všechny"
+msgstr "Zobrazit všechny"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Třídy"
+msgstr "Pouze třídy"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Metody"
+msgstr "Pouze metody"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signály"
+msgstr "Pouze signály"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Konstanty"
+msgstr "Pouze konstanty"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Vlastnosti"
+msgstr "Pouze vlastnosti"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Vlastnosti"
+msgstr "Pouze vlastnosti motivu"
#: editor/editor_help_search.cpp
#, fuzzy
@@ -1610,9 +1594,8 @@ msgid "Member Type"
msgstr "Členové"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Třída:"
+msgstr "Třída"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1711,6 +1694,12 @@ msgstr "Tato operace nemůže být provedena bez kořenového uzlu."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1719,7 +1708,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Nelze přepsat scénu, která je stále otevřená!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1797,6 +1786,9 @@ msgid ""
"Please read the documentation relevant to debugging to better understand "
"this workflow."
msgstr ""
+"Toto je vzdálený objekt, takže jeho změny nebudou zachovány.\n"
+"PÅ™eÄtÄ›te si, prosím, dokumentaci týkající se debugování, abyste lépe "
+"pochopili tento proces."
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
@@ -1962,13 +1954,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Nelze naÄíst skript rozšíření z cesty: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Nelze naÄíst skript rozšíření z cesty: '%s'. Skript není v režimu nástroje "
-"(tool)."
+"Nelze naÄíst skript rozšíření z cesty: '%s'. Zdá se, že se v kódu nachází "
+"chyba. Prosím, zkontrolujte syntax."
#: editor/editor_node.cpp
msgid ""
@@ -2022,7 +2013,6 @@ msgstr "Výchozí"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Zobrazit v souborovém systému"
@@ -2107,7 +2097,6 @@ msgid "Save Scene"
msgstr "Uložit scénu"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Uložit všechny scény"
@@ -2137,7 +2126,7 @@ msgid "Undo"
msgstr "Zpět"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Znovu"
@@ -2161,14 +2150,13 @@ msgstr "Nastavení projektu"
msgid "Export"
msgstr "Exportovat"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Nástroje"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
-msgstr "Otevřít Správce projektu?"
+msgstr "Otevřít složku s daty projektu"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -2473,7 +2461,7 @@ msgstr "Otevřít editor skriptů"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
-msgstr ""
+msgstr "Otevřít knihovnu assetů"
#: editor/editor_node.cpp
msgid "Open the next Editor"
@@ -2492,9 +2480,8 @@ msgid "Thumbnail..."
msgstr "Náhled..."
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit Plugin"
-msgstr "Pluginy"
+msgstr "Upravit plugin"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2523,9 +2510,8 @@ msgstr "Upravit:"
#: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Start"
-msgstr "Start!"
+msgstr "Start"
#: editor/editor_profiler.cpp
msgid "Measure:"
@@ -2577,11 +2563,11 @@ msgstr ""
#: editor/editor_properties.cpp
msgid "Layer"
-msgstr ""
+msgstr "Vrstva"
#: editor/editor_properties.cpp
msgid "Bit %d, value %d"
-msgstr ""
+msgstr "Bit %d, hodnota %d"
#: editor/editor_properties.cpp
msgid "[Empty]"
@@ -2593,9 +2579,17 @@ msgstr "Přiřadit.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Nelze vytvořit ViewportTexture na zdroji uloženém jako soubor.\n"
+"Zdroj musí patřit scéně."
#: editor/editor_properties.cpp
msgid ""
@@ -2609,8 +2603,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Vyberte Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nový skript"
@@ -2644,9 +2637,8 @@ msgstr "Konvertovat na %s"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Open Editor"
-msgstr "Otevřít v editoru"
+msgstr "Otevřít editor"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
@@ -2694,7 +2686,6 @@ msgid "Write your logic in the _run() method."
msgstr "Napište svůj kód v _run() metodě."
#: editor/editor_run_script.cpp
-#, fuzzy
msgid "There is an edited scene already."
msgstr "Nějaka scéna už je upravována."
@@ -2753,11 +2744,11 @@ msgstr "(Aktuální)"
#: editor/export_template_manager.cpp
msgid "Retrieving mirrors, please wait..."
-msgstr ""
+msgstr "Získávání zrcadel, prosím Äekejte..."
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "Odstranit Å¡ablonu verze '%s'?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
@@ -2781,18 +2772,20 @@ msgstr "Extrakce exportních šablon"
#: editor/export_template_manager.cpp
msgid "Importing:"
-msgstr ""
+msgstr "Importování:"
#: editor/export_template_manager.cpp
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
msgstr ""
+"Nebyly nalezeny odkazy pro stažení této verze. Přímé stažení je dostupné "
+"pouze pro oficiální vydání."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Nelze vyřešit."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2802,7 +2795,7 @@ msgstr "Nelze se připojit."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Žádná odpovÄ›Ä."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2812,22 +2805,23 @@ msgstr "Požadavek se nezdařil."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Zacyklené přesměrování."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Selhalo:"
#: editor/export_template_manager.cpp
msgid "Download Complete."
-msgstr ""
+msgstr "Stahování dokonÄeno."
#: editor/export_template_manager.cpp
msgid ""
"Templates installation failed. The problematic templates archives can be "
"found at '%s'."
msgstr ""
+"Instalace šablon selhala. Problémové archivy šablon lze nalézt na '%s'."
#: editor/export_template_manager.cpp
msgid "Error requesting url: "
@@ -2843,11 +2837,11 @@ msgstr "Odpojeno"
#: editor/export_template_manager.cpp
msgid "Resolving"
-msgstr ""
+msgstr "Řeším"
#: editor/export_template_manager.cpp
msgid "Can't Resolve"
-msgstr ""
+msgstr "Nelze vyřešit"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2877,19 +2871,19 @@ msgstr "Chyba připojení"
#: editor/export_template_manager.cpp
msgid "SSL Handshake Error"
-msgstr ""
+msgstr "Selhání SSL handshaku"
#: editor/export_template_manager.cpp
msgid "Current Version:"
-msgstr ""
+msgstr "Aktuální verze:"
#: editor/export_template_manager.cpp
msgid "Installed Versions:"
-msgstr ""
+msgstr "Instalované verze:"
#: editor/export_template_manager.cpp
msgid "Install From File"
-msgstr ""
+msgstr "Instalovat ze souboru"
#: editor/export_template_manager.cpp
msgid "Remove Template"
@@ -2918,9 +2912,8 @@ msgstr ""
"ukládána!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Oblíbené:"
+msgstr "Oblíbené"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3005,14 +2998,12 @@ msgid "Instance"
msgstr "Instance"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Oblíbené:"
+msgstr "Přidat do oblíbených"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Odebrat ze skupiny"
+msgstr "Odebrat z oblíbených"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3034,7 +3025,7 @@ msgstr "Duplikovat..."
msgid "Move To..."
msgstr "Přesunout do..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Nový skript..."
@@ -3043,12 +3034,10 @@ msgid "New Resource..."
msgstr "Nový zdroj..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "Rozbalit vše"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "Sbalit vše"
@@ -3109,24 +3098,20 @@ msgid "Create Script"
msgstr "Vytvořit skript"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Najít v souborech"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Najít: "
+msgstr "Najít:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Složka: "
+msgstr "Složka:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtr: "
+msgstr "Filtry:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3166,7 +3151,8 @@ msgid "Group name already exists."
msgstr "Název skupiny již existuje."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "Neplatný název skupiny."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3303,12 +3289,10 @@ msgid "Failed to load resource."
msgstr "Selhalo nahrání zdroje."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Rozbalit všechny vlastnosti"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Sbalit všechny vlastnosti"
@@ -3415,14 +3399,13 @@ msgid "Activate now?"
msgstr "Aktivovat nyní?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Vytvořit polygon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editovat polygon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3430,30 +3413,37 @@ msgid "Insert Point"
msgstr "Vložit polygon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Upravit polygon (Odstranit bod)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Odstranit polygon a bod"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Vytvořit body."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
+"Upravit existující polygon:\n"
+"LMB: Přesunout bod.\n"
+"Ctrl+LMB: Rozdělit segment.\n"
+"RMB: Vymazat bod."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Odstranit body"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Vymazat body."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3467,15 +3457,14 @@ msgstr "Přidat animaci"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Load.."
-msgstr "NaÄíst"
+msgstr "NaÄíst.."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_state_machine_editor.cpp
msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
+msgstr "Tento typ uzlu nelze použít. Jsou povoleny pouze kořenové uzly."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3494,37 +3483,23 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Select and move points, create points with RMB."
-msgstr ""
+msgstr "Zvolte a přesuňte body. Nové uzly vytvořte pomocí RMB."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Odstranit body"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Vymazat bod."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
-msgstr "Přesunout bod"
+msgstr "Bod"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Open Animation Node"
-msgstr "Jméno animace:"
+msgstr "Otevřít uzel animace"
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Triangle already exists"
-msgstr "Akce '%s' již existuje!"
+msgstr "Trojúhelník již existuje"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
@@ -3587,16 +3562,13 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Add Node.."
-msgstr "Přidat uzel"
+msgstr "Přidat uzel.."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filtered Tracks:"
-msgstr "Editovat filtry"
+msgstr "Upravit filtrované stopy:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Enable filtering"
@@ -3608,15 +3580,15 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "New Animation Name:"
-msgstr ""
+msgstr "Nový název animace:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "New Anim"
-msgstr ""
+msgstr "Nová animace"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Animation Name:"
-msgstr ""
+msgstr "Změnit název animace:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Delete Animation?"
@@ -3628,14 +3600,12 @@ msgid "Remove Animation"
msgstr "Smazat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Invalid animation name!"
-msgstr "Chyba: Neplatné jméno animace!"
+msgstr "Neplatné jméno animace!"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Animation name already exists!"
-msgstr "Chyba: Jméno animace už existuje!"
+msgstr "Jméno animace už existuje!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3659,9 +3629,8 @@ msgid "Duplicate Animation"
msgstr "Duplikovat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to copy!"
-msgstr "ERROR: Nevybrána animace pro kopírování!"
+msgstr "Žádná animace pro kopírování!"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -3677,9 +3646,8 @@ msgid "Paste Animation"
msgstr "Vložit animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to edit!"
-msgstr "ERROR: Nevybrána animace pro úpravu!"
+msgstr "Žádná animace pro úpravu!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
@@ -3723,14 +3691,12 @@ msgid "New"
msgstr "Nový"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Edit Transitions..."
-msgstr "Přechody"
+msgstr "Upravit přechody..."
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Open in Inspector"
-msgstr "Otevřít v editoru"
+msgstr "Otevřít v inspektoru"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -3823,7 +3789,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
msgid "End"
-msgstr ""
+msgstr "Konec"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Immediate"
@@ -3858,14 +3824,12 @@ msgid ""
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Create new nodes."
-msgstr "Vytvořit nový %s"
+msgstr "Vytvořit nové uzly."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Connect nodes."
-msgstr "Připojit uzly"
+msgstr "Připojit uzly."
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -3881,9 +3845,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition: "
-msgstr "Přechod"
+msgstr "Přechod: "
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -4075,7 +4038,7 @@ msgstr "Neúspěšná kontrola sha256 hashe"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Chyba při stahování assetu:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Downloading (%s / %s)..."
@@ -4107,7 +4070,7 @@ msgstr "Chyba při stahování"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Stahování tohoto assetu právě probíhá!"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "First"
@@ -4135,7 +4098,7 @@ msgstr "VÅ¡echny"
msgid "Plugins"
msgstr "Pluginy"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Řadit:"
@@ -4285,21 +4248,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Oddálit"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Oddálit"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Přiblížit"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Režim výběru"
@@ -4480,9 +4441,8 @@ msgid "Show Origin"
msgstr "Zobrazit poÄátek"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show Viewport"
-msgstr "Zobrazit pomocné"
+msgstr "Zobrazit Viewport"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
@@ -4501,13 +4461,12 @@ msgid "Layout"
msgstr "Rozložení"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Insert keys."
-msgstr "Vložit klíÄe"
+msgstr "Vložit klíÄe."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr ""
+msgstr "Vložit klÃ­Ä (existující stopy)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
@@ -4558,8 +4517,17 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Vytvořit Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Vytvořit polygon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editovat polygon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Upravit polygon (Odstranit bod)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4662,37 +4630,9 @@ msgid "Item List Editor"
msgstr "Editor seznamu položek"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Na tomto uzlu není žádný OccluderPolygon2D.\n"
-"Vytvořit a přiřadit k tomuto uzlu?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Vytvořit Occluder Polygon"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Upravit existující polygon:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Přesunout bod."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Rozdělit segment."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Vymazat bod."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh je prázdný!"
@@ -4883,15 +4823,15 @@ msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr ""
+msgstr "Naplnit MultiMesh"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
-msgstr ""
+msgstr "Cílový povrch:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr ""
+msgstr "Zdrojová mesh:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
@@ -4911,11 +4851,11 @@ msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
-msgstr ""
+msgstr "Náhodná rotace:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Tilt:"
-msgstr ""
+msgstr "Náhodné naklonění:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Scale:"
@@ -4927,7 +4867,7 @@ msgstr "Naplnit"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr ""
+msgstr "VytvoÅ™it navigaÄní polygon"
#: editor/plugins/particles_2d_editor_plugin.cpp
#, fuzzy
@@ -4940,11 +4880,11 @@ msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
-msgstr ""
+msgstr "Chyba při nahrávání obrázku:"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "No pixels with transparency > 128 in image..."
-msgstr ""
+msgstr "Žádný pixel s průhledností > 128 v obrázku..."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
@@ -4960,23 +4900,22 @@ msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Convert to CPUParticles"
-msgstr "Konvertovat na velká písmena"
+msgstr "Převést na CPUParticles"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Particles"
-msgstr ""
+msgstr "Částice"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
-msgstr ""
+msgstr "PoÄet vygenerovaných bodů:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generation Time (sec):"
-msgstr ""
+msgstr "Čas generování (sec):"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Mask"
@@ -5048,7 +4987,7 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
-msgstr ""
+msgstr "Odstranit bod z křivky"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Out-Control from Curve"
@@ -5061,7 +5000,12 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Add Point to Curve"
-msgstr ""
+msgstr "Přidat bod do křivky"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Uzavřít křivku"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
@@ -5089,12 +5033,16 @@ msgstr "Shift+Táhnutí:"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Click: Add Point"
-msgstr "Kliknutí: Přidat bod"
+msgstr "Klik: Přidat bod"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
-msgstr ""
+msgstr "Pravý klik: Smazat bod"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
@@ -5107,11 +5055,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Odstranit bod"
@@ -5141,9 +5084,8 @@ msgid "Curve Point #"
msgstr "Bod křivky #"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Set Curve Point Position"
-msgstr "Odstranit signál"
+msgstr "Nastavit pozici bodu křivky"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
@@ -5171,6 +5113,10 @@ msgstr "Odstranit funkci"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5183,8 +5129,14 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
-msgstr "Zobrazit kosti"
+msgid "Sync Bones"
+msgstr "Synchronizovat kosti"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -5228,10 +5180,20 @@ msgid "Transform UV Map"
msgstr "Transformovat UV mapu"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Typ transformace"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Otevřít 2D editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5249,16 +5211,12 @@ msgid "Splits"
msgstr "Rozdělit cestu"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Bones"
-msgstr "Vytvořit kosti"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Vytvořit polygon"
+msgstr "Kosti"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Přesunout bod"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5286,20 +5244,20 @@ msgid "Scale Polygon"
msgstr "Změnit měřítko mnohoúhelníku"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Vyberte složku pro skenování"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5407,12 +5365,11 @@ msgstr "Zdroj"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
+msgstr "AnimationTree nemá nastavenou cestu k AnimstionPlayer"
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Path to AnimationPlayer is invalid"
-msgstr "Strom animace je neplatný."
+msgstr "Cesta k AnimationPlayer je neplatná"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
@@ -5423,59 +5380,66 @@ msgid "Close and save changes?"
msgstr "Zavřít a uložit změny?"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error writing TextFile:"
-msgstr "Chyba pÅ™i naÄítání:"
+msgstr "Chyba při zápisu textového souboru:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "Chyba - Nelze vytvořit skript v souborovém systému."
+msgstr "Chyba: nelze naÄíst soubor."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error could not load file."
-msgstr "Chyba - Nelze vytvořit skript v souborovém systému."
+msgstr "Chyba nelze naÄíst soubor."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error saving file!"
msgstr "Chyba při ukládání souboru!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Chyba při ukládání motivu"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Chyba při ukládání"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Chyba při importu motivu"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Chyba při importu"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "New TextFile..."
-msgstr "Nová složka..."
+msgstr "Nový textový soubor..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Open File"
msgstr "Otevřít soubor"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Save File As..."
-msgstr "Uložit jako..."
+msgstr "Uložit soubor jako..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
msgstr "Importovat motiv"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Chyba při ukládání motivu"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Chyba při ukládání"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Uložit motiv jako..."
@@ -5517,8 +5481,8 @@ msgstr "Soubor"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Zobrazit soubory"
+msgid "Open..."
+msgstr "Otevřít"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5547,6 +5511,11 @@ msgid "Theme"
msgstr "Téma"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importovat motiv"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Znovu naÄíst motiv"
@@ -5555,10 +5524,6 @@ msgid "Save Theme"
msgstr "Uložit motiv"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Uložit motiv jako"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Zavřít dokumentaci"
@@ -5606,9 +5571,8 @@ msgid "Keep Debugger Open"
msgstr "Nechat ladící program otevřený"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "Debugovat externím editorem"
+msgstr "Debugovat v externím editoru"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5651,9 +5615,8 @@ msgid "Debugger"
msgstr "Ladicí program"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
-msgstr "Prohledat výsledky"
+msgstr "Výsledky hledání"
#: editor/plugins/script_text_editor.cpp
msgid "Line"
@@ -5664,9 +5627,12 @@ msgid "(ignore)"
msgstr "(ignorovat)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Přejít na funkci..."
+msgstr "Přejít na funkci"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5700,10 +5666,6 @@ msgstr "Velká písmena"
msgid "Syntax Highlighter"
msgstr "ZvýrazňovaÄ syntaxe"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5755,12 +5717,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Osekat koncové mezery"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Převést odsazení na mezery"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Převést odsazení na taby"
@@ -5778,12 +5738,10 @@ msgid "Remove All Breakpoints"
msgstr "Odstranit všechny breakpointy"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "Přejít na další breakpoint"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "Přejít na předchozí breakpoint"
@@ -5792,17 +5750,14 @@ msgid "Find Previous"
msgstr "Najít předchozí"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "Najít v souborech..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Přejít na funkci..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Přejít na řádek..."
@@ -5843,9 +5798,8 @@ msgid "Create physical skeleton"
msgstr "Vytvořit fyzickou kostru"
#: editor/plugins/skeleton_ik_editor_plugin.cpp
-#, fuzzy
msgid "Play IK"
-msgstr "Spustit"
+msgstr "Spustit IK"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
@@ -6269,11 +6223,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
-msgstr ""
+msgstr "Změna transformace"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
-msgstr ""
+msgstr "Posunout:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate (deg.):"
@@ -6285,7 +6239,7 @@ msgstr "Změnit měřítko (poměr):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr ""
+msgstr "Typ transformace"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -6328,9 +6282,8 @@ msgid "Grow (Pixels): "
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Update Preview"
-msgstr "Náhled"
+msgstr "Obnovit náhled"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Settings:"
@@ -6338,7 +6291,7 @@ msgstr "Nastavení:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
+msgstr "CHYBA: Nelze naÄíst zdroj snímku!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Frame"
@@ -6354,11 +6307,11 @@ msgstr "Vložit snímek"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Empty"
-msgstr ""
+msgstr "Přidat prázdný"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr ""
+msgstr "ZmÄ›nit smyÄku animace"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation FPS"
@@ -6386,11 +6339,11 @@ msgstr "Snímky animace"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (Before)"
-msgstr ""
+msgstr "Vložit prázdný (před)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (After)"
-msgstr ""
+msgstr "Vložit prázdný (za)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Move (Before)"
@@ -6409,12 +6362,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Žádné>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Žádné"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6447,7 +6405,7 @@ msgstr "Oblast textury"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
-msgstr ""
+msgstr "Nelze uložit motiv do souboru:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All Items"
@@ -6471,7 +6429,7 @@ msgstr "Editovat téma..."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme editing menu."
-msgstr ""
+msgstr "Menu editace motivu."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -6487,11 +6445,11 @@ msgstr "Vytvořit prázdnou šablonu"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Editor Template"
-msgstr ""
+msgstr "Vytvořit prázdný motiv editoru"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create From Current Editor Theme"
-msgstr ""
+msgstr "VytvoÅ™it ze souÄasného motivu editoru"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -6603,12 +6561,11 @@ msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
-msgstr ""
+msgstr "Vymazat TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find Tile"
-msgstr "Najít další"
+msgstr "Najít dlaždici"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
@@ -6628,30 +6585,27 @@ msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
-msgstr ""
+msgstr "Vybrat dlaždici"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Odstranit výběr"
+msgstr "Kopírovat výběr"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Režim otáÄení"
+msgstr "OtoÄit doleva"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "OtoÄit polygon"
+msgstr "OtoÄit doprava"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Převrátit horizontálně"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Převrátit vertikálně"
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -6660,13 +6614,13 @@ msgstr "Animace: změna transformace"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Přidat uzel(y) ze stromu"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
-msgstr "Odstranit signál"
+msgid "Remove selected Texture from TileSet."
+msgstr "Odstranit aktuální texturu z TileSetu"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6677,13 +6631,34 @@ msgid "Merge from Scene"
msgstr "SlouÄit ze scény"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Vložit animaci"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Vymazat body."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Vytvořit polygon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6713,16 +6688,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Odstranit vybrané soubory?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Vytvořit složku"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Odstranit body"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Vytvořit složku"
@@ -6741,38 +6727,44 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Vytvořit složku"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
-msgstr "Tato operace nemůže být provedena bez scény."
+msgstr "Tato vlastnost nemůže být změněna."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "Soubor:"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Vertex"
-msgstr "Vrcholy"
+msgstr "Vrchol"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Fragment"
-msgstr "Argumenty:"
+msgstr "Fragment"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Light"
-msgstr "Pravý"
+msgstr "Světlo"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Přidat uzel.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
-msgstr "Shader"
+msgstr "VisualShader"
#: editor/project_export.cpp
-#, fuzzy
msgid "Runnable"
-msgstr "Povolit"
+msgstr "Spustitelný"
#: editor/project_export.cpp
#, fuzzy
@@ -6788,14 +6780,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "Exportní šablony pro tuto platformu chybí nebo jsou poškozené:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "právě uvolněno"
+msgstr "Vydání"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportovat"
+msgstr "Exportování všeho"
#: editor/project_export.cpp
msgid "Presets"
@@ -6807,7 +6797,7 @@ msgstr "Přidat..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Exportovat projekt"
#: editor/project_export.cpp
@@ -7089,18 +7079,20 @@ msgid ""
"You don't currently have any projects.\n"
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
+"V této chvíli nemáte žádný projekt.\n"
+"Přejete si prozkoumat oficiální ukázkové projekty v knihovně assetů?"
#: editor/project_settings_editor.cpp
msgid "Key "
-msgstr ""
+msgstr "Klávesa "
#: editor/project_settings_editor.cpp
msgid "Joy Button"
-msgstr ""
+msgstr "TlaÄítko gamepadu"
#: editor/project_settings_editor.cpp
msgid "Joy Axis"
-msgstr ""
+msgstr "Osa gamepadu"
#: editor/project_settings_editor.cpp
msgid "Mouse Button"
@@ -7520,13 +7512,12 @@ msgid "Substitute"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node name"
-msgstr "Název uzlu:"
+msgstr "Název uzlu"
#: editor/rename_dialog.cpp
msgid "Node's parent name, if available"
-msgstr ""
+msgstr "Jméno rodiÄe uzlu, pokud dostupné"
#: editor/rename_dialog.cpp
msgid "Node type"
@@ -7559,9 +7550,8 @@ msgid "Initial value for the counter"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Step"
-msgstr "Krok:"
+msgstr "Krok"
#: editor/rename_dialog.cpp
msgid "Amount by which counter is incremented for each node"
@@ -8294,7 +8284,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Argument kroku je nula!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8976,6 +8967,10 @@ msgid ""
"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
"define its shape."
msgstr ""
+"Tento uzel nemá žádný tvar, takže nemůže kolidovat ani interagovat s "
+"ostatními objekty.\n"
+"Zvažte možnost přidat CollisionShape2D nebo CollisionPolygon2D jako potomka "
+"abyste definovali jeho tvar."
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -9161,6 +9156,10 @@ msgid ""
"Consider adding a CollisionShape or CollisionPolygon as a child to define "
"its shape."
msgstr ""
+"Tento uzel nemá žádný tvar, takže nemůže kolidovat ani interagovat s "
+"ostatními objekty.\n"
+"Zvažte možnost přidat CollisionShape nebo CollisionPolygon jako potomka "
+"abyste definovali jeho tvar."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -9195,7 +9194,7 @@ msgstr ""
"prosím zdroj tvar!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9234,17 +9233,17 @@ msgid ""
msgstr ""
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D funguje pouze když je dítětem uzlu Path2D."
+msgstr "PathFollow funguje pouze, když je dítětem uzlu Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D funguje pouze když je dítětem uzlu Path2D."
+msgstr "OrientedPathFollow funguje pouze když je dítětem uzlu Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9288,6 +9287,8 @@ msgid ""
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Změny velikosti SoftBody budou za běhu přepsány fyzikálním enginem.\n"
+"Změňte místo něho velikost kolizních tvarů potomků."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -9302,24 +9303,24 @@ msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
+"VehicleWheel slouží jako systém kol pro VehicleBody. Použijte ho prosím jako "
+"potomka VehicleBody."
#: scene/animation/animation_blend_tree.cpp
msgid "On BlendTree node '%s', animation not found: '%s'"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Animation not found: '%s'"
-msgstr "Nástroje pro animaci"
+msgstr "Animace nenalezena: '%s'"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
+msgstr "V uzlu '%s', neplatná animace: '%s'."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "Chyba: Neplatné jméno animace!"
+msgstr "Neplatná animace: '%s'."
#: scene/animation/animation_tree.cpp
#, fuzzy
@@ -9344,6 +9345,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Strom animace je neplatný."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "RAW mód"
@@ -9360,6 +9365,10 @@ msgstr "Pozor!"
msgid "Please Confirm..."
msgstr "PotvrÄte prosím..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9372,7 +9381,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Pokud má exp_edit hodnotu true, pak min_value musí být > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9423,19 +9432,12 @@ msgid "Invalid font size."
msgstr "Neplatná velikost fontu."
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Input"
-msgstr "Přidat vstup"
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Žádné>"
+msgstr "Vstup"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "Neplatná velikost fontu."
+msgstr "Neplatný zdroj pro shader."
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -9449,6 +9451,51 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Vytvořit polygon"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Oddálit"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Přiblížit"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Vytvořit Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Na tomto uzlu není žádný OccluderPolygon2D.\n"
+#~ "Vytvořit a přiřadit k tomuto uzlu?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Upravit existující polygon:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Přesunout bod."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Rozdělit segment."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Vymazat bod."
+
+#~ msgid "New TextFile"
+#~ msgstr "Nový textový soubor"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Uložit motiv jako"
+
+#~ msgid "<None>"
+#~ msgstr "<Žádné>"
+
+#~ msgid "Zoom:"
+#~ msgstr "Přiblížit:"
+
#~ msgid "Class List:"
#~ msgstr "Seznam tříd:"
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 03e628df44..94896879a0 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -9,18 +9,22 @@
# Michael Madsen <mim@michael-madsen.dk>, 2017.
# Christoffer Schindel <ceas@outlook.com>, 2018.
# frederikzt <frederikzt@gmail.com>, 2018.
+# Jonathan B. Jørgensen <pizzaernam@gmail.com>, 2018.
+# Peter G. Laursen <GhostReven@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-21 19:07+0000\n"
-"Last-Translator: frederikzt <frederikzt@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
+"Last-Translator: GhostReven <GhostReven@gmail.com>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/godot-engine/"
"godot/da/>\n"
"Language: da\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -35,16 +39,15 @@ msgstr "Ikke nok bytes til afkodning af bytes, eller ugyldigt format."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr ""
+msgstr "Ugyldigt input %i (mislykket) i udtrykket"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr ""
+msgstr "self kan ikke bruges fordi instansen er null (mislykket)"
#: core/math/expression.cpp
-#, fuzzy
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "Ugyldigt indeks egenskabsnavn '%s' i noden %s."
+msgstr "Ugyldigt operandere til operator %s, %s og %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
@@ -52,7 +55,7 @@ msgstr "Ugyldigt indeks af type %s for basistype %s"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr ""
+msgstr "Ugyldigt navngivet indeks '%s' for basistype %s"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
@@ -60,20 +63,20 @@ msgstr "Ugyldige argumenter til at konstruere '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr ""
+msgstr "Ved kald til '%s':"
#: editor/animation_bezier_editor.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Gratis"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
-msgstr ""
+msgstr "Balanceret"
#: editor/animation_bezier_editor.cpp
msgid "Mirror"
-msgstr ""
+msgstr "Spejl"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
@@ -117,28 +120,27 @@ msgstr "Anim Skift Call"
#: editor/animation_track_editor.cpp
msgid "Property Track"
-msgstr ""
+msgstr "Egenskabsbane"
#: editor/animation_track_editor.cpp
msgid "3D Transform Track"
-msgstr ""
+msgstr "3D-transformationsspor"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr ""
+msgstr "Kald metode spor"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "Béizierkurve spor"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
-msgstr ""
+msgstr "Lydafspilningsspor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Playback Track"
-msgstr "Stop animation afspilning. (S)"
+msgstr "Animation-afspilningsspor"
#: editor/animation_track_editor.cpp
msgid "Add Track"
@@ -149,9 +151,8 @@ msgid "Animation Length Time (seconds)"
msgstr "Animations længde (i sekunder)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Looping"
-msgstr "Animation Zoom."
+msgstr "Animationsløkke"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -160,39 +161,35 @@ msgstr "Funktioner:"
#: editor/animation_track_editor.cpp
msgid "Audio Clips:"
-msgstr ""
+msgstr "Lydklip:"
#: editor/animation_track_editor.cpp
msgid "Anim Clips:"
-msgstr ""
+msgstr "Anim klip:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Toggle this track on/off."
-msgstr "Skift distraktions-fri modus."
+msgstr "Slå spor til/fra."
#: editor/animation_track_editor.cpp
msgid "Update Mode (How this property is set)"
-msgstr ""
+msgstr "Opdateringstilstand (Hvordan denne egenskab er sat)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Interpolation Mode"
-msgstr "Distraktions Fri Modus"
+msgstr "Interpolationsmetode"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
+msgstr "Lykke omviklingstilstand (Interpoler med begyndelsen af lykken)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Remove this track."
-msgstr "Fjern valgte spor."
+msgstr "Fjern spor."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s): "
-msgstr "Tid:"
+msgstr "Tid (s): "
#: editor/animation_track_editor.cpp
msgid "Continuous"
@@ -208,11 +205,11 @@ msgstr "Udløser"
#: editor/animation_track_editor.cpp
msgid "Capture"
-msgstr ""
+msgstr "Optag"
#: editor/animation_track_editor.cpp
msgid "Nearest"
-msgstr ""
+msgstr "Nærmest"
#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
@@ -221,30 +218,28 @@ msgstr "Lineær"
#: editor/animation_track_editor.cpp
msgid "Cubic"
-msgstr ""
+msgstr "Kubik"
#: editor/animation_track_editor.cpp
msgid "Clamp Loop Interp"
-msgstr ""
+msgstr "Klamme Løkke Interpolation"
#: editor/animation_track_editor.cpp
msgid "Wrap Loop Interp"
-msgstr ""
+msgstr "Vikle Løkke Interpolation"
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr ""
+msgstr "Indsæt nøgle"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Duplicate Key(s)"
-msgstr "Anim Dublikér Nøgle"
+msgstr "Dublikér nøgle(r)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Key(s)"
-msgstr "Anim Slet Nøgler"
+msgstr "Slet nøgle(r)"
#: editor/animation_track_editor.cpp
msgid "Remove Anim Track"
@@ -262,7 +257,6 @@ msgstr "Opret %d NYE spor og indsæt nøgler?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -274,7 +268,7 @@ msgstr "Anim Indsæt"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
+msgstr "Animationsafspiller kan ikke animere sig selv, kun andre afspillere."
#: editor/animation_track_editor.cpp
msgid "Anim Create & Insert"
@@ -290,7 +284,7 @@ msgstr "Anim Indsæt Nøgle"
#: editor/animation_track_editor.cpp
msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
+msgstr "Transformeringsspor kan kun anvendes på rumlige noder."
#: editor/animation_track_editor.cpp
msgid ""
@@ -299,35 +293,38 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
+"Lydspor kan kun pege på noder af typen:\n"
+"-AudioStreamPlayer\n"
+"-AudioStreamPlayer2D\n"
+"-AudioStreamPlayer3D"
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
+msgstr "Animation spor kan kun pege på AnimationSpiller noder."
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
-msgstr ""
+msgstr "En animation spiller kan ikke animerer sig selv, kun andre spillerer."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
-msgstr ""
+msgstr "Det er ikke muligt at tilføje et nyt spor uden en rod"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a key."
-msgstr ""
+msgstr "Sporvej er ugyldig, så kan ikke tilføje en nøgle."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
+msgstr "Spor er ikke af typen rumlig, kan ikke indsætte nøgle"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
-msgstr ""
+msgstr "Sporvej er ugyldig, så kan ikke tilføje en metode nøgle."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Method not found in object: "
-msgstr "VariableGet blev ikke fundet i scriptet: "
+msgstr "Metode ikke fundet i objekt: "
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -335,7 +332,7 @@ msgstr "Anim Flyt Nøgle"
#: editor/animation_track_editor.cpp
msgid "Clipboard is empty"
-msgstr ""
+msgstr "Udklipsholder er tom"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
@@ -345,24 +342,24 @@ msgstr "Anim Skaler Nøgler"
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
+"Denne mulighed virker ikke for Bezier-redigering, da det kun er et enkelt "
+"spor."
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
-msgstr ""
+msgstr "Vis kun spor fra noder valgt in træ."
#: editor/animation_track_editor.cpp
msgid "Group tracks by node or display them as plain list."
-msgstr ""
+msgstr "Grupper spor efter node eller vis dem som almindelig liste."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Snap (s): "
-msgstr "Trin:"
+msgstr "Trin: "
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation step value."
-msgstr "Animation Zoom."
+msgstr "Animation trin værdi."
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -374,19 +371,16 @@ msgid "Edit"
msgstr "Rediger"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "Animation Zoom."
+msgstr "Animation egenskaber."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Copy Tracks"
-msgstr "Kopier Parametre"
+msgstr "Kopier Spor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Paste Tracks"
-msgstr "Indsæt Parametre"
+msgstr "Indsæt Spor"
#: editor/animation_track_editor.cpp
msgid "Scale Selection"
@@ -405,19 +399,16 @@ msgid "Duplicate Transposed"
msgstr "Duplicate transposed"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
msgstr "Slet Valgte"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Gå Til Næste Trin"
+msgstr "Gå til Næste Trin"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "GÃ¥ Til Forrige Trin"
+msgstr "GÃ¥ til Forrige Trin"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -425,19 +416,19 @@ msgstr "Optimer Animation"
#: editor/animation_track_editor.cpp
msgid "Clean-Up Animation"
-msgstr "Clean-Up Animation"
+msgstr "Ryd op Animation"
#: editor/animation_track_editor.cpp
msgid "Pick the node that will be animated:"
-msgstr ""
+msgstr "Vælg noden der vil blive animeret:"
#: editor/animation_track_editor.cpp
msgid "Use Bezier Curves"
-msgstr ""
+msgstr "Brug Bezier Kurver"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
-msgstr "Anim. optimizer"
+msgstr "Anim. optimerer"
#: editor/animation_track_editor.cpp
msgid "Max. Linear Error:"
@@ -481,7 +472,7 @@ msgstr "Skalaforhold:"
#: editor/animation_track_editor.cpp
msgid "Select tracks to copy:"
-msgstr ""
+msgstr "Vælg spor til kopiering:"
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -539,26 +530,29 @@ msgstr "Erstat Alle"
msgid "Selection Only"
msgstr "Kun Valgte"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom Ind"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom Ud"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Nulstil Zoom"
#: editor/code_editor.cpp
msgid "Warnings:"
-msgstr ""
+msgstr "Advarsler:"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "Zoom Ind"
+msgid "Font Size:"
+msgstr "Skrifttype Størrelse:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -650,9 +644,8 @@ msgid "Disconnect '%s' from '%s'"
msgstr "Afbryd '%s' fra '%s'"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect all from signal: '%s'"
-msgstr "Afbryd '%s' fra '%s'"
+msgstr "Frakoble alt fra signal: '%s'"
#: editor/connections_dialog.cpp
msgid "Connect..."
@@ -664,18 +657,17 @@ msgid "Disconnect"
msgstr "Afbryd"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect Signal: "
-msgstr "Forbindelses Signal:"
+msgstr "Forbind Signal: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection: "
-msgstr "Forbindelses fejl"
+msgstr "Redigere Forbindelse: "
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr ""
+"Er du sikker på at du vil fjerne alle forbindelser fra \"%s\" signalet?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -683,22 +675,19 @@ msgstr "Signaler"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
+msgstr "Er du sikker på at du vil fjerne alle forbindelser fra dette signal?"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect All"
-msgstr "Afbryd"
+msgstr "Frakoble Alt"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit..."
-msgstr "Rediger"
+msgstr "Rediger..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Metoder"
+msgstr "GÃ¥ til Metode"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -723,8 +712,8 @@ msgid "Recent:"
msgstr "Seneste:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Søgning:"
@@ -775,8 +764,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Sti"
@@ -824,7 +812,6 @@ msgstr ""
"Fjern dem alligevel? (ej fortrydes)"
#: editor/dependency_editor.cpp editor/export_template_manager.cpp
-#, fuzzy
msgid "Cannot remove:"
msgstr "Kan ikke fjerne:"
@@ -833,9 +820,8 @@ msgid "Error loading:"
msgstr "Fejl under indlæsning:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "Indlæs af Scene fejler, fordi den er afhængig af noget der mangler:"
+msgstr "Indlæs mislykkedes på grund af manglende afhængigheder:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1057,7 +1043,7 @@ msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr "Mute"
+msgstr "Sluk"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
@@ -1196,9 +1182,8 @@ msgid "Rename Autoload"
msgstr "Omdøb Autoload"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Toggle AutoLoad Globals"
-msgstr "Skift Autoload Globals"
+msgstr "Skift AutoIndlæs Globalt"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
@@ -1242,8 +1227,7 @@ msgid "Node Name:"
msgstr "Node Navn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Navn"
@@ -1321,24 +1305,21 @@ msgid "File Exists, Overwrite?"
msgstr "Filen Eksisterer, Overskrives?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Vælg Method"
+msgstr "Vælg denne mappe"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "Kopier Sti"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "Vis I Fil Manager"
+msgstr "Åbn i Filhåndtering"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Vis I Fil Manager"
+msgstr "Vis i Filhåndtering"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1454,11 +1435,11 @@ msgstr "Top"
#: editor/editor_help.cpp
msgid "Class:"
-msgstr "Class:"
+msgstr "Klasse:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
msgid "Inherits:"
-msgstr "Inherits:"
+msgstr "Arver:"
#: editor/editor_help.cpp
msgid "Inherited by:"
@@ -1481,19 +1462,16 @@ msgid "Methods"
msgstr "Metoder"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Metoder"
+msgstr "Metoder:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Egenskaber"
+msgstr "Tema Egenskaber"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Egenskaber"
+msgstr "Tema Egenskaber:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1513,21 +1491,19 @@ msgstr "enum "
#: editor/editor_help.cpp
msgid "Constants"
-msgstr "Constants"
+msgstr "Konstanter"
#: editor/editor_help.cpp
msgid "Constants:"
-msgstr "Constants:"
+msgstr "Konstanter:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Beskrivelse"
+msgstr "Klasse beskrivelse"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Beskrivelse:"
+msgstr "Klasse beskrivelse:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1539,19 +1515,17 @@ msgid ""
"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
"url][/color]."
msgstr ""
-"Der er i øjeblikket ingen beskrivelse af denne klasse. Det vil være en stor "
-"hjælp, hvis du kan [color=$color][url=$url]bidrage[/url][/color] med en "
-"beskrivelse!"
+"Der er i øjeblikket ingen vejledninger for denne klasse, du kan [color="
+"$color][url=$url]bidrage med en[/url][/color] eller [color=$color][url="
+"$url2]anmode en[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Beskrivelse af Egenskaber:"
+msgstr "Egenskab beskrivelser"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "Beskrivelse af Egenskaber:"
+msgstr "Egenskab beskrivelser:"
#: editor/editor_help.cpp
msgid ""
@@ -1562,14 +1536,12 @@ msgstr ""
"ved at give os dit [color=$color][url=$url]bidrag[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Metode Beskrivelse:"
+msgstr "Metode beskrivelser"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Metode Beskrivelse:"
+msgstr "Metode beskrivelser:"
#: editor/editor_help.cpp
msgid ""
@@ -1586,49 +1558,40 @@ msgid "Search Help"
msgstr "Søg i Hjælp"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Erstat Alle"
+msgstr "Vis alle"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Klasser"
+msgstr "Kun klasser"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Metoder"
+msgstr "Kun metoder"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signaler"
+msgstr "Kun signaler"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constants"
+msgstr "Kun konstanter"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Egenskaber"
+msgstr "Kun egenskaber"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Egenskaber"
+msgstr "Kun tema egenskaber"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Medlemmer"
+msgstr "Medlemstype"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Class:"
+msgstr "Klasse"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1722,9 +1685,14 @@ msgid "Creating Thumbnail"
msgstr "Opretter Thumbnail"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Denne handling kan ikke foretages uden tree root"
+msgstr "Denne handling kan ikke foretages uden en trærod."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
#: editor/editor_node.cpp
msgid ""
@@ -1739,7 +1707,6 @@ msgid "Can't overwrite scene that is still open!"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Can't load MeshLibrary for merging!"
msgstr "Kan ikke indlæse MeshLibrary til sammenlægning!"
@@ -1748,9 +1715,8 @@ msgid "Error saving MeshLibrary!"
msgstr "Fejl, kan ikke gemme MeshLibrary!"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Can't load TileSet for merging!"
-msgstr "Kan ikke indlæse TileSet til sammenlægning!"
+msgstr "Kan ikke indlæse Flisesæt til sammenlægning!"
#: editor/editor_node.cpp
msgid "Error saving TileSet!"
@@ -1994,13 +1960,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Kan ikke indlæse addon script fra stien: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Kan ikke indlæse addon script fra sti: '%s' Script er ikke i "
-"værktøjstilstand."
+"Kan ikke indlæse tilføjelse script fra sti: '%s' Der ser ud til at være en "
+"fejl i koden, tjek syntaksen."
#: editor/editor_node.cpp
msgid ""
@@ -2053,19 +2018,16 @@ msgstr "Standard"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "Vis I Fil Manager"
+msgstr "Vis i Filsystem"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play This Scene"
-msgstr "Spil Scenen"
+msgstr "Spil denne Scene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close Tab"
-msgstr "Luk"
+msgstr "Luk faneblad"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -2084,9 +2046,8 @@ msgid "%d more files"
msgstr "%d flere filer"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Dock Position"
-msgstr "Dock Position"
+msgstr "Dok Position"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
@@ -2101,7 +2062,6 @@ msgid "Add a new scene."
msgstr "Tilføj en ny scene."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene"
msgstr "Scene"
@@ -2130,7 +2090,6 @@ msgid "New Scene"
msgstr "Ny Scene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited Scene..."
msgstr "Ny Nedarvet Scene..."
@@ -2143,7 +2102,6 @@ msgid "Save Scene"
msgstr "Gem Scene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Gem alle Scener"
@@ -2165,7 +2123,7 @@ msgstr "MaskeBibliotek..."
#: editor/editor_node.cpp
msgid "TileSet..."
-msgstr "TileSet..."
+msgstr "Flisesæt..."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
@@ -2173,14 +2131,13 @@ msgid "Undo"
msgstr "Fortryd"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Annuller Fortyd"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Revert Scene"
-msgstr "Vend Scene Tilbage"
+msgstr "Gendan scene"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
@@ -2196,16 +2153,15 @@ msgstr "Projekt Indstillinger"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr "Eksporter"
+msgstr "Eksport"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Værktøjer"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
-msgstr "Ã…bn Projekt Manager?"
+msgstr "Ã…bn Projekt datamappe"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -2213,13 +2169,12 @@ msgstr "Afslut til Projekt Listen"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/project_export.cpp
-#, fuzzy
msgid "Debug"
-msgstr "Debug"
+msgstr "Fejlfinde"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr "Implementere med Remote Debug"
+msgstr "Indsætte med Fjern Fejlfind"
#: editor/editor_node.cpp
msgid ""
@@ -2231,7 +2186,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Small Deploy with Network FS"
-msgstr "Lille Deploy med Nætværks FS"
+msgstr "Lille Indsættelse med Nætværks FS"
#: editor/editor_node.cpp
msgid ""
@@ -2306,34 +2261,31 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Editor"
-msgstr "Editor"
+msgstr "Redaktør"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
msgstr "Editor Indstillinger"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor Layout"
-msgstr "Editor Layout"
+msgstr "Redaktør opsætning"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
msgstr "Skifter fuldskærm"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Editor Data/Settings Folder"
-msgstr "Editor Indstillinger"
+msgstr "Åbn redaktør Data/Indstillinger-mappe"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Editor Settings Folder"
-msgstr "Editor Indstillinger"
+msgstr "Åbn redaktør Indstillinger mappe"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
@@ -2417,9 +2369,8 @@ msgstr ""
#: editor/editor_node.cpp editor/project_settings_editor.cpp
#: editor/settings_config_dialog.cpp
-#, fuzzy
msgid "Save & Restart"
-msgstr "Gem & Afslut"
+msgstr "Gem & genstart"
#: editor/editor_node.cpp
msgid "Spins when the editor window repaints!"
@@ -2455,9 +2406,8 @@ msgid "Node"
msgstr "Node"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand Bottom Panel"
-msgstr "Udvid alle"
+msgstr "Udvid nederste panel"
#: editor/editor_node.cpp scene/resources/visual_shader.cpp
msgid "Output"
@@ -2536,9 +2486,8 @@ msgid "Thumbnail..."
msgstr "Miniature..."
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit Plugin"
-msgstr "Rediger Poly"
+msgstr "Redigere tilslutning"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2562,9 +2511,8 @@ msgid "Status:"
msgstr "Status:"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit:"
-msgstr "Rediger"
+msgstr "Rediger:"
#: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp
#: editor/rename_dialog.cpp
@@ -2584,9 +2532,8 @@ msgid "Average Time (sec)"
msgstr "Gennemsnitlig Tid (sek)"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Frame %"
-msgstr "Frame %"
+msgstr "Ramme %"
#: editor/editor_profiler.cpp
msgid "Physics Frame %"
@@ -2605,17 +2552,14 @@ msgid "Self"
msgstr "Selv"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Frame #:"
-msgstr "Frame #:"
+msgstr "Ramme #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Tid:"
+msgstr "Tid"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
msgstr "Kald"
@@ -2641,6 +2585,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2657,8 +2607,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2692,9 +2641,8 @@ msgstr "Konverter Til %s"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Open Editor"
-msgstr "Ã…bn 2D Editor"
+msgstr "Åbn redaktør"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
@@ -2811,18 +2759,16 @@ msgid "Can't open export templates zip."
msgstr "Kan ikke åbne eksport skabeloner zip."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ugyldigt version.txt format inde i skabeloner."
+msgstr "Ugyldigt version.txt format inde i skabeloner: %s."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
msgstr "Ingen version.txt fundet inde i skabeloner."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for templates:"
-msgstr "Fejl ved oprettelse af sti til skabeloner:\n"
+msgstr "Fejl ved oprettelse af sti til skabeloner:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2842,7 +2788,6 @@ msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't resolve."
msgstr "Kan ikke løses."
@@ -2858,9 +2803,8 @@ msgstr "Ingen reaktion."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Foresp. Fejlede."
+msgstr "Forespørgsel mislykkedes."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2883,14 +2827,12 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error requesting url: "
-msgstr "Fejl i anmodning url: "
+msgstr "Fejl ved anmodning af url: "
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Connecting to Mirror..."
-msgstr "Forbinder..."
+msgstr "Forbinder til spejl..."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -2901,9 +2843,8 @@ msgid "Resolving"
msgstr "Løse"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Resolve"
-msgstr "Kan ikke Løses"
+msgstr "Kan ikke løses"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2911,9 +2852,8 @@ msgid "Connecting..."
msgstr "Forbinder..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
-msgstr "Ingen forbindelse"
+msgstr "Kan ikke forbinde"
#: editor/export_template_manager.cpp
msgid "Connected"
@@ -2965,18 +2905,16 @@ msgid "Download Templates"
msgstr "Download Skabeloner"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Vælg spejl fra liste: "
+msgstr "Vælg spejl fra liste: (Shift+Click: Åbn i Browser)"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
msgstr "Kan ikke skrive til file_type_cache.cch. Gemmer ikke fil type cache!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoritter:"
+msgstr "Favoritter"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3102,7 +3040,7 @@ msgstr "Duplikere"
msgid "Move To..."
msgstr "Flyt Til..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Hurtig Ã…bn Script..."
@@ -3245,7 +3183,7 @@ msgstr "FEJL: Animationsnavn eksisterer allerede!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ugyldigt navn."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3500,14 +3438,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Opret Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Rediger Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3515,25 +3453,28 @@ msgid "Insert Point"
msgstr "Indsæt Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Rediger Poly (Fjern Punkt)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Fjern Poly og Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Opret en ny polygon fra start"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Slet points"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Rediger eksisterende polygon:\n"
"LMB: Flyt Punkt.\n"
@@ -3541,7 +3482,9 @@ msgstr ""
"RMB: Slet Punkt."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
msgstr "Slet points"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3587,17 +3530,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Slet points"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Slet points"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3675,7 +3607,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Tilføj Node"
@@ -4228,7 +4159,7 @@ msgstr "Alle"
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sorter:"
@@ -4377,21 +4308,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zoom Ud"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zoom Ud"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zoom Ind"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4650,8 +4579,17 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr ""
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Opret Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Rediger Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Rediger Poly (Fjern Punkt)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4753,35 +4691,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5152,6 +5064,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Rediger Node Kurve"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5179,6 +5096,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5194,11 +5115,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5259,6 +5175,10 @@ msgstr "Fjern Funktion"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5270,7 +5190,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5315,10 +5241,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Opret Poly"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Ã…bn 2D Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5341,12 +5277,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Opret Poly"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Fjern punkt"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5373,19 +5305,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5529,20 +5461,24 @@ msgid "Error saving file!"
msgstr "Fejl, kan ikke gemme TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Fejl, under forsøg på at gemme."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Fejl i flytning:\n"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Error loading skrifttype."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Fejl i flytning:\n"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5564,6 +5500,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5605,8 +5549,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Vis filer"
+msgid "Open..."
+msgstr "Ã…ben"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5636,15 +5580,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importerer Scene..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5755,6 +5700,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Tilføj Funktion"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5787,10 +5736,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6498,11 +6443,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6677,7 +6627,7 @@ msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Line Draw"
-msgstr "Line Draw"
+msgstr "Linje Streg"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
@@ -6744,12 +6694,12 @@ msgstr "Anim Skift Transformering"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Tilføj Node(r) fra Tree"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Fjern Kurve Punkt"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6761,13 +6711,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Indsæt Spor"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Slet points"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Opret Poly"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6797,16 +6768,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Slet markerede filer?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Gem den aktuelt redigerede ressource."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Slet points"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Gem den aktuelt redigerede ressource."
@@ -6825,12 +6807,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Gem den aktuelt redigerede ressource."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Denne handling kan ikke udføres uden en scene."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6847,6 +6836,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Tilføj Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6885,7 +6879,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Eksporter Projekt"
#: editor/project_export.cpp
@@ -8368,7 +8362,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "trin argument er nul!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9274,7 +9269,7 @@ msgstr ""
"til det!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9325,7 +9320,9 @@ msgstr ""
"PathFollow2D virker kun, når den angives som et barn af en Path2D node."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9422,6 +9419,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9438,6 +9439,10 @@ msgstr "Advarsel!"
msgid "Please Confirm..."
msgstr "Bekræft venligst..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9501,10 +9506,6 @@ msgstr "Ugyldig skriftstørrelse."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9522,6 +9523,28 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Opret Poly"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Opret en ny polygon fra start"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zoom Ud"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zoom Ind"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Vis filer"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zoom Ind"
+
#~ msgid "Class List:"
#~ msgstr "Class Liste:"
@@ -9591,9 +9614,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Anim Skift Spor Wrap Mode"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Rediger Node Kurve"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "Rediger Valgte Kurve"
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 95d275e732..cfe9545db2 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -34,11 +34,12 @@
# Robin Bauknecht <robin.bauknecht@gmail.com>, 2018.
# Julian Retzlaff <julian.retzlaff@googlemail.com>, 2018.
# asyncial <mahlburg@posteo.de>, 2018.
+# ssantos <ssantos@web.de>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-10 20:07+0000\n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
@@ -47,7 +48,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -63,9 +64,8 @@ msgstr ""
"Nicht genügend Bytes zum Dekodieren des Byte-Strings oder ungültiges Format."
#: core/math/expression.cpp
-#, fuzzy
msgid "Invalid input %i (not passed) in expression"
-msgstr "Ungültige Eingabe %i (fehlgeschlagen) in Ausdruck"
+msgstr "Ungültige Eingabe %i (nicht bestanden) in Ausdruck"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -283,7 +283,6 @@ msgstr "%d NEUE Spuren erstellen und Schlüsselbilder hinzufügen?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -433,14 +432,12 @@ msgid "Delete Selection"
msgstr "Auswahl löschen"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Gehe zum nächsten Schritt"
+msgstr "Zum nächsten Schritt"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "Gehe zum vorherigen Schritt"
+msgstr "Zum vorherigen Schritt"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -562,15 +559,19 @@ msgstr "Alle ersetzen"
msgid "Selection Only"
msgstr "Nur Auswahl"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Vergrößern"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Verkleinern"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Vergrößerung zurücksetzen"
@@ -579,8 +580,8 @@ msgid "Warnings:"
msgstr "Warnungen:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Vergrößerung:"
+msgid "Font Size:"
+msgstr "Schriftgröße:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -693,9 +694,8 @@ msgid "Edit Connection: "
msgstr "Verbindung bearbeiten: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Sollen wirklich alle Verbindungen mit diesem Signal entfernt werden?"
+msgstr "Sollen wirklich alle Verbindungen des Signals „%s“ entfernt werden?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -740,8 +740,8 @@ msgid "Recent:"
msgstr "Kürzlich:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Suche:"
@@ -792,8 +792,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pfad"
@@ -852,10 +851,8 @@ msgid "Error loading:"
msgstr "Fehler beim Laden:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr ""
-"Die Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:"
+msgstr "Ladefehler aufgrund fehlender Abhängigkeiten:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1264,8 +1261,7 @@ msgid "Node Name:"
msgstr "Node-Name:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Name"
@@ -1343,7 +1339,6 @@ msgid "File Exists, Overwrite?"
msgstr "Datei existiert bereits. Ãœberschreiben?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Diesen Ordner auswählen"
@@ -1352,15 +1347,13 @@ msgid "Copy Path"
msgstr "Pfad kopieren"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Im Dateimanager öffnen"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Zeige im Dateimanager"
+msgstr "Im Dateimanager anzeigen"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1503,19 +1496,16 @@ msgid "Methods"
msgstr "Methoden"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Methoden"
+msgstr "Methoden:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Eigenschaften"
+msgstr "Motiv-Eigenschaften"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Eigenschaften:"
+msgstr "Motiv-Eigenschaften:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1542,14 +1532,12 @@ msgid "Constants:"
msgstr "Konstanten:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Beschreibung"
+msgstr "Klassenbeschreibung"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Beschreibung:"
+msgstr "Klassenbeschreibung:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1566,12 +1554,10 @@ msgstr ""
"$url2]Meldung von Problemen[/url][/color] sind sehr erwünscht."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Eigenschaften-Beschreibung:"
+msgstr "Eigenschaften-Beschreibung"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "Eigenschaften-Beschreibung:"
@@ -1584,12 +1570,10 @@ msgstr ""
"$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr erwünscht!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Methoden-Beschreibung:"
+msgstr "Methoden-Beschreibung"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "Methoden-Beschreibung:"
@@ -1607,49 +1591,40 @@ msgid "Search Help"
msgstr "Hilfe durchsuchen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Normale Ansicht"
+msgstr "Alles anzeigen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Klassen"
+msgstr "Nur Klassen"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Methoden"
+msgstr "Nur Methoden"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signale"
+msgstr "Nur Signale"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Konstanten"
+msgstr "Nur Konstanten"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Eigenschaften"
+msgstr "Nur Eigenschaften"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Eigenschaften"
+msgstr "Nur Motiv-Eigenschaften"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Mitglieder"
+msgstr "Mitgliedstyp"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Klasse:"
+msgstr "Klasse"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1750,6 +1725,15 @@ msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Diese Szene kann nicht gespeichert werden da sie eine zyklische "
+"Instantiierungshierarchie enthält.\n"
+"Speichern ist erst nach Beheben des Konflikts möglich."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1758,7 +1742,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Momentan geöffnete Szenen können nicht überschrieben werden!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -2021,13 +2005,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Erweiterungsskript konnte nicht geladen werden: ‚%s‘."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Erweiterungsskript konnte nicht geladen werden: ‚%s‘ Skript ist nicht im "
-"Werkzeugmodus."
+"Erweiterungsskript konnte nicht von folgendem Pfad geladen werden: ‚%s‘. Es "
+"scheint ein Fehler im Quellcode zu sein. Bitte Syntax überprüfen."
#: editor/editor_node.cpp
msgid ""
@@ -2084,7 +2067,6 @@ msgstr "Standard"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Im Dateisystem anzeigen"
@@ -2169,7 +2151,6 @@ msgid "Save Scene"
msgstr "Szene speichern"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Alle Szenen speichern"
@@ -2199,7 +2180,7 @@ msgid "Undo"
msgstr "Rückgängig machen"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Wiederherstellen"
@@ -2223,7 +2204,7 @@ msgstr "Projekteinstellungen"
msgid "Export"
msgstr "Exportieren"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Werkzeuge"
@@ -2654,9 +2635,18 @@ msgstr "Zuweisen.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"ViewportTextures können nicht für Ressourcen erstellt werden die als Datei "
+"gespeichert sind.\n"
+"Diese Ressourcen müssen zu einer Szene gehören."
#: editor/editor_properties.cpp
msgid ""
@@ -2665,13 +2655,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"ViewportTexture kann für diese Ressource nicht erstellt werden weil sie "
+"nicht als lokal zu einer Szene markiert wurde.\n"
+"Bitte die ‚Lokal zu Szene‘-Eigenschaft an dieser Ressource aktivieren (und "
+"an allen Ressourcen die sie enthalten, bis zum nächsten Node)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Viewport auswählen"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Neues Skript"
@@ -2981,9 +2974,8 @@ msgstr ""
"Der Dateityp-Cache wird nicht gespeichert!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoriten:"
+msgstr "Favoriten"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3069,14 +3061,12 @@ msgid "Instance"
msgstr "Instanz"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favoriten:"
+msgstr "Zu Favoriten hinzufügen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Aus Gruppe entfernen"
+msgstr "Aus Favoriten entfernen"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3098,7 +3088,7 @@ msgstr "Duplizieren..."
msgid "Move To..."
msgstr "Verschiebe zu..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Neues Skript..."
@@ -3107,12 +3097,10 @@ msgid "New Resource..."
msgstr "Neue Ressource..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "Alle expandieren"
+msgstr "Alle ausklappen"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "Alle einklappen"
@@ -3136,9 +3124,8 @@ msgid "Re-Scan Filesystem"
msgstr "Dateisystem erneut einlesen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Modus umschalten"
+msgstr "Geteilten Modus umschalten"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3175,24 +3162,20 @@ msgid "Create Script"
msgstr "Erstelle Skript"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "In Dateien suchen"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Suche: "
+msgstr "Suche:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Verzeichnis: "
+msgstr "Verzeichnis:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filter"
+msgstr "Filter:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3232,7 +3215,8 @@ msgid "Group name already exists."
msgstr "Gruppenname existiert bereits."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "Ungültiger Gruppenname."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3369,12 +3353,10 @@ msgid "Failed to load resource."
msgstr "Laden der Ressource gescheitert."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Alle Eigenschaften ausklappen"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Alle Eigenschaften einklappen"
@@ -3480,14 +3462,13 @@ msgid "Activate now?"
msgstr "Sofort aktivieren?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Polygon erstellen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Polygon bearbeiten"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3495,25 +3476,27 @@ msgid "Insert Point"
msgstr "Punkt einfügen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Polygon bearbeiten (Punkt entfernen)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Polygon und Punkt entfernen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Polygon von Grund auf neu erstellen"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Punkte erstellen."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Existierendes Polygon editieren:\n"
"LMT: Punkt verschieben.\n"
@@ -3521,8 +3504,9 @@ msgstr ""
"RMT: Punkt löschen."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Punkte entfernen"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Punkte löschen."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3570,15 +3554,6 @@ msgstr "Punkte auswählen und verschieben, erstellen mit RMT."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Punkte erstellen."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Punkte löschen."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Punkt"
@@ -3660,7 +3635,6 @@ msgstr ""
"nicht abgerufen werden."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Node hinzufügen.."
@@ -4197,7 +4171,7 @@ msgstr "Alle"
msgid "Plugins"
msgstr "Erweiterungen"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sortiere:"
@@ -4329,9 +4303,8 @@ msgid "Resize CanvasItem"
msgstr "CanvasItem in Größe anpassen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "CanvasItem rotieren"
+msgstr "CanvasItem skalieren"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4354,18 +4327,19 @@ msgid "Paste Pose"
msgstr "Pose einfügen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Verkleinern"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Vergrößerung zurücksetzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Vergrößern"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Auswahlmodus"
@@ -4396,9 +4370,8 @@ msgid "Rotate Mode"
msgstr "Rotationsmodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Skalierungsmodus (R)"
+msgstr "Skalierungsmodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4499,9 +4472,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Macht Unterobjekte dieses Objekts wieder auswählbar."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Skelett"
+msgstr "Skelett-Einstellungen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4555,7 +4527,7 @@ msgstr "Zeige Ansichtsfenster (Viewport)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Gruppe zeigen und Icons sperren"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4628,8 +4600,17 @@ msgstr ""
"Ziehen + Alt: Nodetyp ändern"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Polygon3D erstellen"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Polygon erstellen"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Polygon bearbeiten"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Polygon bearbeiten (Punkt entfernen)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4730,37 +4711,9 @@ msgid "Item List Editor"
msgstr "Auflistungseditor"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Keine OccluderPolygon2D-Ressource für dieses Node gefunden.\n"
-"Neues erstellen und zuweisen?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Occluder-Polygon erzeugen"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Polygon von Grund auf neu erstellen."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Bestehendes Polygon bearbeiten:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMT: Punkt verschieben."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Strg+LMT: Segment aufteilen."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMT: Punkt entfernen."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh ist leer!"
@@ -4998,7 +4951,6 @@ msgid "Create Navigation Polygon"
msgstr "Erzeuge Navigationspolygon"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
msgstr "Generiere Sichtbarkeits-Rechteck"
@@ -5133,6 +5085,11 @@ msgid "Add Point to Curve"
msgstr "Punkt zu Kurve hinzufügen"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Kurve schließen"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Punkt auf Kurve verschieben"
@@ -5160,6 +5117,11 @@ msgid "Click: Add Point"
msgstr "Klicken: Punkt hinzufügen"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Segment aufteilen (in Kurve)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Rechtsklick: Punkt löschen"
@@ -5175,11 +5137,6 @@ msgstr "Punkt hinzufügen (in leerem Raum)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Segment aufteilen (in Kurve)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Punk löschen"
@@ -5236,6 +5193,10 @@ msgstr "Ausgangskontrollpunkt löschen"
msgid "Remove In-Control Point"
msgstr "Eingangskontrollpunkt löschen"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Segment aufteilen (in Kurve)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Gelenk verschieben"
@@ -5247,10 +5208,17 @@ msgstr ""
"Die Skeleton-Eigenschaft des Polygon2Ds zeigt nicht auf ein Skeleton2D-Node"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Knochen synchronisieren"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Erzeuge UV-Map"
@@ -5287,10 +5255,21 @@ msgid "Transform UV Map"
msgstr "Transformiere UV-Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Typ der Transformation"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Knochengewichte malen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon2D-UV-Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon2D-UV-Editor"
@@ -5311,11 +5290,8 @@ msgid "Bones"
msgstr "Knochen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Polygon erstellen"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Punkt verschieben"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5343,19 +5319,23 @@ msgid "Scale Polygon"
msgstr "Polygon skalieren"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Zwei Punkte verbinden um Teilung zu erstellen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Teilung zum entfernen auswählen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Gewichte mit angegebener Intensität malen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "Gewichte mit angegebener Intensität weg malen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5482,7 +5462,6 @@ msgid "Error writing TextFile:"
msgstr "Fehler beim Schreiben von Textdatei:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
msgstr "Fehler: Datei konnte nicht geladen werden."
@@ -5495,19 +5474,23 @@ msgid "Error saving file!"
msgstr "Fehler beim Speichern der Datei!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Fehler beim Speichern des Motivs"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Fehler beim Speichern"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Fehler beim importieren des Motivs"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Fehler beim Importieren"
#: editor/plugins/script_editor_plugin.cpp
@@ -5527,6 +5510,14 @@ msgid "Import Theme"
msgstr "Motiv importieren"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Fehler beim Speichern des Motivs"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Fehler beim Speichern"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Motiv speichern als..."
@@ -5567,8 +5558,9 @@ msgid "File"
msgstr "Datei"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Neue Textdatei"
+#, fuzzy
+msgid "Open..."
+msgstr "Öffnen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5583,7 +5575,6 @@ msgid "Copy Script Path"
msgstr "Skriptpfad kopieren"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Zurück im Verlauf"
@@ -5597,6 +5588,11 @@ msgid "Theme"
msgstr "Motiv"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Motiv importieren"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Motiv neu laden"
@@ -5605,10 +5601,6 @@ msgid "Save Theme"
msgstr "Motiv speichern"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Motiv speichern als"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Dokumentation schließen"
@@ -5655,7 +5647,6 @@ msgid "Keep Debugger Open"
msgstr "Debugger offen halten"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
msgstr "Mit externem Editor debuggen"
@@ -5700,7 +5691,6 @@ msgid "Debugger"
msgstr "Debugger"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "Suchergebnisse"
@@ -5713,9 +5703,12 @@ msgid "(ignore)"
msgstr "(ignorieren)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Springe zu Funktion..."
+msgstr "Springe zu Funktion"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Standard"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5749,10 +5742,6 @@ msgstr "Kapitalisiere"
msgid "Syntax Highlighter"
msgstr "Syntaxhervorhebung"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Standard"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5804,12 +5793,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Kürze Leerraum am Zeilenende"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Konvertiere Einrückung zu Leerzeichen"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Konvertiere Einrückung zu Tabulatoren"
@@ -5827,12 +5814,10 @@ msgid "Remove All Breakpoints"
msgstr "Lösche alle Haltepunkte"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "Springe zum nächsten Haltepunkt"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "Springe zum vorigen Haltepunkt"
@@ -5841,17 +5826,14 @@ msgid "Find Previous"
msgstr "Finde Vorheriges"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "In Dateien suchen..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Springe zu Funktion..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Springe zu Zeile..."
@@ -5947,11 +5929,11 @@ msgstr "Animationsschlüsselbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pitch"
-msgstr "Tonhöhe"
+msgstr "Neigen"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Gieren"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6118,9 +6100,8 @@ msgid "Freelook Speed Modifier"
msgstr "Freisicht Geschwindigkeitsregler"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "Sichtrotation sperren"
+msgstr "Sichtrotation gesperrt"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6456,12 +6437,18 @@ msgid "Set Region Rect"
msgstr "Bereichsrechteck setzen"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Wähle Griff"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Einrastmodus:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Nichts>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nichts"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6624,9 +6611,8 @@ msgid "Fix Invalid Tiles"
msgstr "Ungültige Kacheln reparieren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Auswahl zentrieren"
+msgstr "Auswahl ausschneiden"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6673,39 +6659,37 @@ msgid "Pick Tile"
msgstr "Wähle Kachel"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Auswahl verschieben"
+msgstr "Auswahl kopieren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Rotationsmodus"
+msgstr "Nach links rotieren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "nach rechts"
+msgstr "Nach rechts rotieren"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Horizontal spiegeln"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Vertikal spiegeln"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Transformation"
+msgstr "Transform löschen"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Texturen zu TileSet hinzufügen"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Aktuelle Textur aus TileSet entfernen"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6717,21 +6701,40 @@ msgid "Merge from Scene"
msgstr "Aus Szene zusammenführen"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Unterkachel zur Benutzung als Icon auswählen, dieses wird auch für ungültige "
-"Autokachelzuordnungen benutzt werden."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Kachelnamen anzeigen (Alt-Taste halten)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Animation einfügen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Punkte löschen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Polygon von Grund auf neu erstellen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Kachelnamen anzeigen (Alt-Taste halten)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
-msgstr "Wirklich ausgewählte Textur und ALLE sie nutzenden Kacheln entfernen?"
+msgstr "Ausgewählte Textur und ALLE sie nutzenden Kacheln entfernen?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
@@ -6746,10 +6749,10 @@ msgid "Merge from scene?"
msgstr "Aus Szene vereinen?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
msgstr ""
-" Dateien wurde nicht hinzugefügt weil sie schon in der Liste vorhanden waren."
+"%s Datei(en) wurde(n) nicht hinzugefügt weil sie schon in der Liste "
+"vorhanden war(en)."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6760,14 +6763,9 @@ msgstr ""
"Auf andere Kachel drücken um sie zu bearbeiten."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"LMT: Bit anstellen.\n"
-"RMT: Bit ausstellen.\n"
-"Auf andere Kachel klicken um diese zu bearbeiten."
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Ausgewählte Dateien löschen?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6778,6 +6776,22 @@ msgstr ""
"Auf andere Kachel drücken um diese zu bearbeiten."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Punkte entfernen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"LMT: Bit anstellen.\n"
+"RMT: Bit ausstellen.\n"
+"Auf andere Kachel klicken um diese zu bearbeiten."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6796,11 +6810,21 @@ msgstr ""
"Auf andere Kachel drücken um diese zu bearbeiten."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Unterkachel auswählen um ihre Priorität zu ändern.\n"
+"Auf andere Kachel drücken um diese zu bearbeiten."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Diese Eigenschaft kann nicht geändert werden."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Kachelsatz"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6816,6 +6840,11 @@ msgid "Light"
msgstr "Licht"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Node hinzufügen.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
@@ -6836,14 +6865,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "Export-Vorlagen für dieses Systeme fehlen / sind fehlerhaft:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "gerade losgelassen"
+msgstr "Veröffentlichung"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportiere für %s"
+msgstr "Exportiere alles"
#: editor/project_export.cpp
msgid "Presets"
@@ -6855,8 +6882,8 @@ msgstr "Hinzufügen..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "Exportvorlage:"
+msgid "Export Path"
+msgstr "Exportpfad:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6921,14 +6948,12 @@ msgid "Export PCK/Zip"
msgstr "Exportiere PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Export-Modus:"
+msgstr "Export-Modus?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Exportieren"
+msgstr "Alles exportieren"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7618,16 +7643,14 @@ msgid "Step"
msgstr "Schritt"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
-msgstr "Wert um welchen Zähler für jedes Node erhöht wird"
+msgstr "Wert um welchen der Zähler für jedes Node erhöht wird"
#: editor/rename_dialog.cpp
msgid "Padding"
msgstr "Versatz"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7778,6 +7801,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Wenn „Editierbare Instanz“ deaktiviert wird, werden alle Eigenschaften "
+"dieses Nodes wieder in ihren Ausgangszustand zurückgesetzt."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7852,9 +7877,8 @@ msgid "Clear Inheritance"
msgstr "Leere Vererbung"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Öffne Godot-Referenzdokumentation"
+msgstr "Dokumentation öffnen"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7869,9 +7893,8 @@ msgid "Change Type"
msgstr "Typ ändern"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Skript öffnen"
+msgstr "Skript erweitern"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -8035,9 +8058,8 @@ msgid "Path is empty"
msgstr "Pfad ist leer"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Sprite ist leer!"
+msgstr "Dateiname ist leer"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8128,9 +8150,8 @@ msgid "Bytes:"
msgstr "Bytes:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "Aufrufsverlauf"
+msgstr "Stacktrace"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8357,7 +8378,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Schrittargument ist null!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8580,7 +8602,7 @@ msgstr "Ende des inneren Exception-Stack-Traces"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "NavMesh backen"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8969,12 +8991,11 @@ msgstr "VisualScript suchen"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "%s abrufen"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Setzen "
+msgstr "%s setzen"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9075,6 +9096,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"CPUParticles2D-Animationen benötigen ein CanvasItemMaterial mit der "
+"Eigenschaft „Particles Animation“ aktiviert."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9134,6 +9157,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Particles2D-Animationen benötigen ein CanvasItemMaterial mit der Eigenschaft "
+"„Particles Animation“ aktiviert."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9283,16 +9308,16 @@ msgstr ""
"Bitte erzeuge eine shape Ressource dafür!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
-"Nichts ist sichtbar da keine Meshe den Zeichendurchläufen zugewiesen wurden."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Nichts ist sichtbar da kein Mesh zugewiesen wurden."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"CPUParticles-Animationen benötigen ein SpatialMaterial mit der Eigenschaft "
+"„Billboard Particles“ aktiviert."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9323,24 +9348,27 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Particles-Animationen benötigen ein SpatialMaterial mit der Eigenschaft "
+"„Billboard Particles“ aktiviert."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes "
+"PathFollow funktioniert nur, wenn es als Unterobjekt eines Path-Nodes "
"gesetzt wird."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes "
-"gesetzt wird."
+"OrientedPathFollow funktioniert nur, wenn es als Unterobjekt eines Path-"
+"Nodes gesetzt wird."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
-msgstr ""
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
+msgstr "OrientedPathFollow benötigt im Elternpfad aktivierte Aufwärtsvektoren."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9382,7 +9410,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Diese Körper wird ignoriert werden bis ein Mesh gesetzt wurde"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9450,6 +9477,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Die Wurzel des Animationsspieler ist kein gültiges Node."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Rohdatenmodus"
@@ -9466,6 +9497,10 @@ msgstr "Warnung!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9479,7 +9514,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Wenn exp_edit true ist muss min_value größer als null sein."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9538,10 +9573,6 @@ msgstr "Ungültige Schriftgröße."
msgid "Input"
msgstr "Eingang"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nichts"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Ungültige Quelle für Shader."
@@ -9558,6 +9589,59 @@ msgstr "Zuweisung an Uniform."
msgid "Varyings can only be assigned in vertex function."
msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden."
+#~ msgid "Create Poly"
+#~ msgstr "Polygon erstellen"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Polygon von Grund auf neu erstellen"
+
+#~ msgid "Zoom out"
+#~ msgstr "Verkleinern"
+
+#~ msgid "Zoom in"
+#~ msgstr "Vergrößern"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Polygon3D erstellen"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Keine OccluderPolygon2D-Ressource für dieses Node gefunden.\n"
+#~ "Neues erstellen und zuweisen?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Bestehendes Polygon bearbeiten:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMT: Punkt verschieben."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Strg+LMT: Segment aufteilen."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMT: Punkt entfernen."
+
+#~ msgid "New TextFile"
+#~ msgstr "Neue Textdatei"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Motiv speichern als"
+
+#~ msgid "<None>"
+#~ msgstr "<Nichts>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Unterkachel zur Benutzung als Icon auswählen, dieses wird auch für "
+#~ "ungültige Autokachelzuordnungen benutzt werden."
+
+#~ msgid "Zoom:"
+#~ msgstr "Vergrößerung:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Sollen wirklich alle Verbindungen entfernt werden von „"
@@ -10280,9 +10364,6 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden."
#~ msgid "Source Font:"
#~ msgstr "Quellschriftart:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Quellschriftgröße:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Ziel-Ressource:"
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index 66085ed6b8..45c6666a5d 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -8,15 +8,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2016-07-17 23:44+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:38+0100\n"
"Last-Translator: Christian Fisch <christian.fiesel@gmail.com>\n"
"Language-Team: Swiss High German <https://hosted.weblate.org/projects/godot-"
"engine/godot/de_CH/>\n"
"Language: de_CH\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.8-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -259,7 +261,6 @@ msgstr "Erstelle %d in neuer Ebene inklusiv Bild?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -532,15 +533,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -549,7 +554,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -713,8 +718,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -761,8 +766,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1223,8 +1227,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1696,6 +1699,12 @@ msgstr "Ohne eine Szene kann das nicht funktionieren."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2102,7 +2111,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2127,7 +2136,7 @@ msgstr "Projekteinstellungen"
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2548,6 +2557,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2564,8 +2579,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "Script hinzufügen"
@@ -3000,7 +3014,7 @@ msgstr "Node(s) duplizieren"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Script hinzufügen"
@@ -3128,7 +3142,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Projektname:"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3382,15 +3396,15 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Node erstellen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Script hinzufügen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
@@ -3398,31 +3412,33 @@ msgid "Insert Point"
msgstr "Bild einfügen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "Ungültige Bilder löschen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Bild einfügen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
-msgstr "Bild einfügen"
+msgid "Erase points."
+msgstr "Oberfläche %d"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3466,17 +3482,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Bild einfügen"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Oberfläche %d"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3554,7 +3559,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Node"
@@ -4106,7 +4110,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4260,15 +4264,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4531,7 +4535,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Node erstellen"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4636,35 +4649,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5041,6 +5028,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Node Kurve editieren"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5068,6 +5060,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5083,11 +5079,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5147,6 +5138,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5158,7 +5153,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5200,10 +5201,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Transformationstyp"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV Editor"
@@ -5225,12 +5236,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Node erstellen"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Ungültige Bilder löschen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5257,19 +5264,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5410,20 +5417,24 @@ msgid "Error saving file!"
msgstr "Szene kann nicht gespeichert werden."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Szene kann nicht gespeichert werden."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Szene kann nicht gespeichert werden."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Fehler beim Exportieren des Projekts!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Szene kann nicht gespeichert werden."
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5444,6 +5455,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5485,8 +5504,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Datei(en) öffnen"
+msgid "Open..."
+msgstr "Öffnen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5514,15 +5533,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5630,6 +5649,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5662,10 +5685,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6370,11 +6389,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6618,12 +6642,12 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Node von Szene"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Ungültige Bilder löschen"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6635,13 +6659,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Node erstellen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Oberfläche %d"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Node erstellen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6671,16 +6716,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Node(s) löschen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Node(s) löschen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Bild einfügen"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Node(s) löschen"
@@ -6699,12 +6755,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Node(s) löschen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Ohne eine Szene kann das nicht funktionieren."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "Datei(en) öffnen"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6720,6 +6783,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6757,7 +6825,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Projekt exportieren"
#: editor/project_export.cpp
@@ -8250,7 +8318,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9147,7 +9215,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9196,7 +9264,9 @@ msgstr ""
"gesetzt wird."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9286,6 +9356,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -9303,6 +9377,10 @@ msgstr "Alert!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9360,10 +9438,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9381,6 +9455,10 @@ msgid "Varyings can only be assigned in vertex function."
msgstr ""
#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Datei(en) öffnen"
+
+#, fuzzy
#~ msgid "Show current scene file."
#~ msgstr "Node(s) löschen"
@@ -9391,9 +9469,6 @@ msgstr ""
#~ msgid "Convert To Lowercase"
#~ msgstr "Verbindung zu Node:"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Node Kurve editieren"
-
#~ msgid "Anim Add Key"
#~ msgstr "Anim Bild hinzufügen"
@@ -9515,9 +9590,6 @@ msgstr ""
#~ "SampleLibrary Ressource in der 'samples' Eigenschaft erzeugt oder "
#~ "definiert werden."
-#~ msgid "Error exporting project!"
-#~ msgstr "Fehler beim Exportieren des Projekts!"
-
#~ msgid "Error writing the project PCK!"
#~ msgstr "Fehler beim Schreiben des Projekts PCK!"
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 7f7d1391a1..01468c1173 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -243,7 +243,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -511,15 +510,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -528,7 +531,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -686,8 +689,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -734,8 +737,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1187,8 +1189,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1643,6 +1644,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2039,7 +2046,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2063,7 +2070,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2474,6 +2481,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2490,8 +2503,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2904,7 +2916,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3027,7 +3039,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3273,14 +3285,12 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3288,29 +3298,29 @@ msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3355,15 +3365,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3439,7 +3440,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3971,7 +3971,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4119,15 +4119,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4383,7 +4383,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4485,35 +4493,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4881,6 +4863,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4908,6 +4894,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4923,11 +4913,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -4984,6 +4969,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -4994,7 +4983,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5034,7 +5029,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5058,11 +5061,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5090,19 +5089,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5240,19 +5239,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5272,6 +5271,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5312,7 +5319,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5341,15 +5348,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5456,6 +5463,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5488,10 +5499,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6180,11 +6187,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6420,11 +6432,11 @@ msgid "Clear transform"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6436,13 +6448,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6472,15 +6502,23 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete selected Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6498,11 +6536,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6518,6 +6562,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6554,7 +6602,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -7997,7 +8045,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8839,7 +8887,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8882,7 +8930,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -8970,6 +9020,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -8986,6 +9040,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9042,10 +9100,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 3f04d1ce6a..f83b35fe97 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -6,15 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-09-25 10:28+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:39+0100\n"
"Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/"
"el/>\n"
"Language: el\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -250,7 +252,6 @@ msgstr "ΔημιουÏγία %d νέων κομματιών και εισαγωÎ
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -529,15 +530,19 @@ msgstr "Αντικατάσταση όλων"
msgid "Selection Only"
msgstr "Μόνο στην επιλογή"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Μεγέθυνση"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "ΣμÏκÏινση"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "ΕπαναφοÏά μεγέθυνσης"
@@ -546,8 +551,9 @@ msgid "Warnings:"
msgstr "ΠÏοειδοποιήσεις:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Μεγέθυνση:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "Μέγεθος πηγαίας γÏαμματοσειÏάς:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -709,8 +715,8 @@ msgid "Recent:"
msgstr "ΠÏόσφατα:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Αναζήτηση:"
@@ -761,8 +767,7 @@ msgid "Resource"
msgstr "ΠόÏος"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "ΔιαδÏομή"
@@ -1224,8 +1229,7 @@ msgid "Node Name:"
msgstr "Όνομα κόμβου:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Όνομα"
@@ -1709,6 +1713,12 @@ msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χÏ
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2161,7 +2171,7 @@ msgid "Undo"
msgstr "ΑναίÏεση"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "ΑκÏÏωση αναίÏεσης"
@@ -2185,7 +2195,7 @@ msgstr "Ρυθμίσεις έÏγου"
msgid "Export"
msgstr "Εξαγωγή"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ΕÏγαλεία"
@@ -2616,6 +2626,12 @@ msgstr "ΕκχώÏηση.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2632,8 +2648,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Επιλέξτε μία οπτική γωνία"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Îεα δεσμή ενεÏγειών"
@@ -3062,7 +3077,7 @@ msgstr "ΑναπαÏαγωγή..."
msgid "Move To..."
msgstr "Μετακίνηση σε..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Îεα δεσμή ενεÏγειών..."
@@ -3196,7 +3211,8 @@ msgid "Group name already exists."
msgstr "ΥπαÏκτό όνομα ομάδας."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "ΆκυÏο όνομα ομάδας."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3446,14 +3462,14 @@ msgid "Activate now?"
msgstr "ΕνεÏγοποίηση Ï„ÏŽÏα;"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Δημιουγία πολυγώνου"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "ΕπεγεÏγασία πολυγώνου"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3461,25 +3477,27 @@ msgid "Insert Point"
msgstr "Εισαγωγή σημείου"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "ΕπεγεÏγασία πολυγώνου (ΑφαίÏεση σημείου)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "ΑφαίÏεση πολυγώνου και σημείου"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "ΔημιουÏγία σημείων."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"ΕπεξεÏγασία υπαÏÎºÏ„Î¿Ï Ï€Î¿Î»Ï…Î³ÏŒÎ½Î¿Ï…:\n"
"ΑÏιστεÏÏŒ κλικ: Μετακίνηση σημείου.\n"
@@ -3487,8 +3505,9 @@ msgstr ""
"Δεξί κλικ: ΔιαγÏαφή σημείου."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "ΔιαγÏαφή σημείων"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "ΔιαγÏαφή σημείων."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3535,15 +3554,6 @@ msgstr "Επιλογή και μετακίνηση σημείων, δημιουÏ
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "ΔημιουÏγία σημείων."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "ΔιαγÏαφή σημείων."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Σημείο"
@@ -3627,7 +3637,6 @@ msgstr ""
"ανάκτηση των ονομάτων των κομματιών."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "ΠÏοσθήκη κόμβου.."
@@ -4165,7 +4174,7 @@ msgstr "Όλα"
msgid "Plugins"
msgstr "ΠÏόσθετα"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ταξινόμηση:"
@@ -4322,18 +4331,19 @@ msgid "Paste Pose"
msgstr "Επικόληση στάσης"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "ΣμÏκÏινση"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "ΕπαναφοÏά μεγέθυνσης"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Μεγέθυνση"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Επιλογή λειτουÏγίας"
@@ -4594,8 +4604,17 @@ msgstr ""
"ΣÏÏσιμο & απόθεση + Alt: Αλλαγή του Ï„Ïπου του κόμβου"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "ΔημιουÏγία πολυγώνου 3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Δημιουγία πολυγώνου"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "ΕπεγεÏγασία πολυγώνου"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "ΕπεγεÏγασία πολυγώνου (ΑφαίÏεση σημείου)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4696,37 +4715,9 @@ msgid "Item List Editor"
msgstr "ΕπεξεÏγαστής λίστας στοιχείων"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Δεν υπάÏχει πόÏος OccluderPolygon2D σε αυτόν τον κόμβο.\n"
-"Îα δημιουÏγία και να οÏισθεί ένας;"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "ΔημιουÏγία πολυγώνου εμποδίου"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "ΕπεξεÏγασία υπαÏÎºÏ„Î¿Ï Ï€Î¿Î»Ï…Î³ÏŽÎ½Î¿Ï…:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "ΑÏιστεÏÏŒ κλίκ: ΜΕτακίνηση σημείου."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+ΑÏιστεÏÏŒ κλικ: ΔιαχωÏσμός τμήματος."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Δεξί κλικ: ΔιαγÏαφή σημείου."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Το πλέγμα είναι άδειο!"
@@ -5099,6 +5090,11 @@ msgid "Add Point to Curve"
msgstr "ΠÏοσθήκη σημείου στην καμπÏλη"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "κλείσιμο καμπÏλης"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Μετακίνηση σημείου στην καμπÏλη"
@@ -5126,6 +5122,11 @@ msgid "Click: Add Point"
msgstr "Κλικ: ΠÏοσθήκη σημείου"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "ΔιαχωÏισμός τμήματος (στην καμπÏλη)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Δεξί κλικ: ΔιαγÏαφή σημείου"
@@ -5141,11 +5142,6 @@ msgstr "ΠÏοσθήκη σημείου (σε άδειο χώÏο)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "ΔιαχωÏισμός τμήματος (στην καμπÏλη)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "ΔιαγÏαφή σημείου"
@@ -5202,6 +5198,10 @@ msgstr "ΑφαίÏεση σημείου ελέγχου εξόδου"
msgid "Remove In-Control Point"
msgstr "ΑφαίÏεση σημείου ελέγχου εισόδου"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "ΔιαχωÏισμός τμήματος (στην καμπÏλη)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5214,10 +5214,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Εμφάνιση οστών"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "ΔημιουÏγία χάÏτη UV"
@@ -5259,10 +5265,20 @@ msgid "Transform UV Map"
msgstr "Μετασχηματισμός χάÏτη UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Είδος μετασχηματισμοÏ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "ΕπεξεÏγαστής δισδιάστατου πολυγώνου"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "ΕπεξεÏγαστής δισδιάστατου πολυγώνου"
@@ -5287,11 +5303,7 @@ msgstr "ΔημιουÏγία οστών"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Δημιουγία πολυγώνου"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Μετακίνηση σημείου"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5319,20 +5331,20 @@ msgid "Scale Polygon"
msgstr "Κλιμάκωση πολυγώνου"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5482,19 +5494,23 @@ msgid "Error saving file!"
msgstr "Σφάλμα κατά την αποθήκευση TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Σφάλμα κατά την αποθήκευση θέματος"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Σφάλμα κατά την αποθήκευση"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Σφάλμα κατά την εισαγωγή θέματος"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Σφάλμα κατά την εισαγωγή"
#: editor/plugins/script_editor_plugin.cpp
@@ -5517,6 +5533,14 @@ msgid "Import Theme"
msgstr "Εισαγωγή θέματος"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Σφάλμα κατά την αποθήκευση θέματος"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Σφάλμα κατά την αποθήκευση"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Αποθήκευση θέματος ως..."
@@ -5558,8 +5582,8 @@ msgstr "ΑÏχείο"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "ΠÏοβολή αÏχείων"
+msgid "Open..."
+msgstr "Άνοιγμα"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5588,6 +5612,11 @@ msgid "Theme"
msgstr "Θέμα"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Εισαγωγή θέματος"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "ΕπαναφόÏτωση θέματος"
@@ -5596,10 +5625,6 @@ msgid "Save Theme"
msgstr "Αποθήκευση θέματος"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Αποθήκευση θέματος ως"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Κλείσιμο τεκμηÏίωσης"
@@ -5709,6 +5734,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Πήγαινε σε συνάÏτηση..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Μόνο οι πόÏοι από το σÏστημα αÏχείων μποÏοÏν να διαγÏαφοÏν."
@@ -5742,10 +5771,6 @@ msgstr "Κεφαλαιοποίηση"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6462,11 +6487,18 @@ msgid "Set Region Rect"
msgstr "ΟÏισμός οÏθογωνίου πεÏιοχής"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "ΟÏισμός λαβής"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "ΛειτουÏγία κουμπώματος:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Τίποτα>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6711,12 +6743,12 @@ msgstr "Μετασχηματισμός"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "ΠÏοσθέστε κόμβο/-ους από δέντÏο"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "ΑφαίÏεση Ï„Ïέχουσας εγγÏαφής"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6728,15 +6760,34 @@ msgid "Merge from Scene"
msgstr "Συγχώνευση από σκηνή"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Επικόλληση κίνησης"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "ΔιαγÏαφή σημείων."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
-"Επιλέξτε υπότιτλο για εικονίδιο, o οποίος θα χÏησιμοποιείται και σε μη "
-"έγκυÏες συνδέσεις αυτόματων πλακιδίων."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6767,13 +6818,8 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"ΑÏιστεÏÏŒ κλικ: ενεÏγοποίησε το bit.\n"
-"Δεξί κλικ: απενεÏγοποίησε το bit."
+msgid "Delete selected Rect."
+msgstr "ΔιαγÏαφή επιλεγμένων αÏχείων;"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6784,6 +6830,21 @@ msgstr "Επέλεξε το Ï„Ïέχων επεξεÏγαζόμενο υπο-Ï€Î
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Delete polygon."
+msgstr "ΔιαγÏαφή σημείων"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"ΑÏιστεÏÏŒ κλικ: ενεÏγοποίησε το bit.\n"
+"Δεξί κλικ: απενεÏγοποίησε το bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6801,11 +6862,19 @@ msgstr "Επιλέξτε υπο-πλακίδιο για να αλλάξετε τ
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Επιλέξτε υπο-πλακίδιο για να αλλάξετε την Ï€ÏοτεÏαιότητα του."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "ΣÏνολο πλακιδίων"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6825,6 +6894,11 @@ msgstr "Δεξιά"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "ΠÏοσθήκη κόμβου.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "ΠÏόγÏαμμα σκίασης"
@@ -6865,7 +6939,7 @@ msgstr "ΠÏοσθήκη..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Εξαγωγή έÏγου"
#: editor/project_export.cpp
@@ -8406,7 +8480,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Η παÏάμετÏος step είναι μηδέν!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9332,7 +9407,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
"Τίποτα δεν είναι οÏατό, επειδή δεν έχουν οÏιστεί πεÏάσματα για τα πλέγματα."
@@ -9383,7 +9458,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεί έναν κόμβο Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9495,6 +9572,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Το δέντÏο κίνησης δεν είναι έγκυÏο."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Ωμή λειτουÏγία"
@@ -9511,6 +9592,10 @@ msgstr "Ειδοποίηση!"
msgid "Please Confirm..."
msgstr "ΠαÏακαλώ επιβεβαιώστε..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9581,11 +9666,6 @@ msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
msgid "Input"
msgstr "ΠÏοσθήκη εισόδου"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Τίποτα>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9603,6 +9683,60 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Δημιουγία πολυγώνου"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή"
+
+#~ msgid "Zoom out"
+#~ msgstr "ΣμÏκÏινση"
+
+#~ msgid "Zoom in"
+#~ msgstr "Μεγέθυνση"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "ΔημιουÏγία πολυγώνου 3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Δεν υπάÏχει πόÏος OccluderPolygon2D σε αυτόν τον κόμβο.\n"
+#~ "Îα δημιουÏγία και να οÏισθεί ένας;"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "ΕπεξεÏγασία υπαÏÎºÏ„Î¿Ï Ï€Î¿Î»Ï…Î³ÏŽÎ½Î¿Ï…:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "ΑÏιστεÏÏŒ κλίκ: ΜΕτακίνηση σημείου."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+ΑÏιστεÏÏŒ κλικ: ΔιαχωÏσμός τμήματος."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Δεξί κλικ: ΔιαγÏαφή σημείου."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "ΠÏοβολή αÏχείων"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Αποθήκευση θέματος ως"
+
+#~ msgid "<None>"
+#~ msgstr "<Τίποτα>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Επιλέξτε υπότιτλο για εικονίδιο, o οποίος θα χÏησιμοποιείται και σε μη "
+#~ "έγκυÏες συνδέσεις αυτόματων πλακιδίων."
+
+#~ msgid "Zoom:"
+#~ msgstr "Μεγέθυνση:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr ""
#~ "Είστε σίγουÏοι πως θέλετε να αφαιÏέσετε όλες τις συνδέσεις απο το \""
@@ -10320,9 +10454,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "Πηγαία γÏαμματοσειÏά:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Μέγεθος πηγαίας γÏαμματοσειÏάς:"
-
#~ msgid "Dest Resource:"
#~ msgstr "ΠόÏος Ï€ÏοοÏισμοÏ:"
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 6c1b5908cd..741d58a62c 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -33,12 +33,14 @@
# Franklin David Macias Avellan <franklin.macias864@gmail.com>, 2018.
# Dianiel García <jdangarr@gmail.com>, 2018.
# ayahuasca1979 <ayahuasca1979@gmail.com>, 2018.
+# Elena G <elena.guzbla@gmail.com>, 2018.
+# willy zegarra <willyzegarra58@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-09-14 23:25+0000\n"
-"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
+"Last-Translator: willy zegarra <willyzegarra58@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -46,7 +48,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -282,7 +284,6 @@ msgstr "¿Crear %d nuevas pistas e insertar claves?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -439,7 +440,6 @@ msgid "Go to Next Step"
msgstr "Ir al siguiente paso"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Ir al paso anterior"
@@ -563,15 +563,19 @@ msgstr "Reemplazar todo"
msgid "Selection Only"
msgstr "Sólo selección"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Acercar"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Alejar"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Restablecer zoom"
@@ -580,8 +584,8 @@ msgid "Warnings:"
msgstr "Advertencias:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Zoom:"
+msgid "Font Size:"
+msgstr "Tamaño de la tipografía:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -694,9 +698,8 @@ msgid "Edit Connection: "
msgstr "Editar Conexión: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "¿Estás seguro/a que quieres quitar todas las conexiones de esta señal?"
+msgstr "¿Está seguro/a que quiere quitar todas las conexiones de esta señal?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -741,8 +744,8 @@ msgid "Recent:"
msgstr "Recientes:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Buscar:"
@@ -793,8 +796,7 @@ msgid "Resource"
msgstr "Recursos"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ruta"
@@ -1260,8 +1262,7 @@ msgid "Node Name:"
msgstr "Nombre del nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nombre"
@@ -1339,7 +1340,6 @@ msgid "File Exists, Overwrite?"
msgstr "El archivo ya existe ¿Quieres sobreescribirlo?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Seleccionar esta carpeta"
@@ -1348,7 +1348,6 @@ msgid "Copy Path"
msgstr "Copiar ruta"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Abrir en el Explorador de Archivos"
@@ -1499,19 +1498,16 @@ msgid "Methods"
msgstr "Métodos"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Métodos"
+msgstr "Métodos:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Propiedades"
+msgstr "Propiedades del Tema"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Propiedades:"
+msgstr "Propiedades del Tema:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1543,9 +1539,8 @@ msgid "Class Description"
msgstr "Descripción"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Descripción:"
+msgstr "Descripción de la Clase:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1562,12 +1557,10 @@ msgstr ""
"$color][url=$url2]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Descripción de la propiedad:"
+msgstr "Descripción de la propiedad"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "Descripción de la propiedad:"
@@ -1580,14 +1573,12 @@ msgstr ""
"[color=$color][url=$url]aportando una[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descripción del método:"
+msgstr "Descripción del métodos:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Descripción del método:"
+msgstr "Descripciones del método:"
#: editor/editor_help.cpp
msgid ""
@@ -1603,49 +1594,40 @@ msgid "Search Help"
msgstr "Ayuda de búsqueda"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Mostrar normales"
+msgstr "Mostrar todos"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Clases"
+msgstr "Solo clases"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Métodos"
+msgstr "Solo métodos"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Señales"
+msgstr "Solo señales"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constantes"
+msgstr "Solo Constantes"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Propiedades"
+msgstr "Solo Propiedades"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Propiedades"
+msgstr "Solo Propiedades del Tema"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Miembros"
+msgstr "Tipo de Miembro"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Clase:"
+msgstr "Clase"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1744,6 +1726,16 @@ msgid "This operation can't be done without a tree root."
msgstr "Esta operación no puede realizarse sin una escena raíz."
#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Esta escena no puede ser guardada por que hay una inclusión inclusiones "
+"cíclicas en la instancia.\n"
+"Por favor, resuélvalo e intente guardar de nuevo."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
@@ -1753,7 +1745,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "¡No se puede sobreescribir una escena que está abierta!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -2017,13 +2009,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "No se pudo cargar el script addon desde la ruta: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"No se pudo cargar el script addon desde la ruta: '%s' El script no está en "
-"modo tool."
+"No se puede cargar el script de addon desde la ruta: '%s' Parece que hay un "
+"error en el código, por favor compruebe la sintaxis."
#: editor/editor_node.cpp
msgid ""
@@ -2194,7 +2185,7 @@ msgid "Undo"
msgstr "Deshacer"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Rehacer"
@@ -2218,7 +2209,7 @@ msgstr "Ajustes del proyecto"
msgid "Export"
msgstr "Exportar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Herramientas"
@@ -2648,9 +2639,18 @@ msgstr "Asignar..."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"No se puede crear un ViewportTexture en un recurso guardado como un "
+"archivo.\n"
+"El recurso necesita pertenecer a una escena."
#: editor/editor_properties.cpp
msgid ""
@@ -2664,8 +2664,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Selecciona un viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nuevo script"
@@ -2977,9 +2976,8 @@ msgstr ""
"de tipos de archivo!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoritos:"
+msgstr "Favoritos"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3066,14 +3064,12 @@ msgid "Instance"
msgstr "Instanciar"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favoritos:"
+msgstr "Agregar a favoritos"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Quitar del grupo"
+msgstr "Quitar de favoritos"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3095,7 +3091,7 @@ msgstr "Duplicar..."
msgid "Move To..."
msgstr "Mover a..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Nuevo Script..."
@@ -3171,24 +3167,22 @@ msgid "Create Script"
msgstr "Crear script"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
-msgstr "Encontrar en archivos"
+msgstr "Buscar en Archivos"
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find:"
-msgstr "Buscar: "
+msgstr "Buscar:"
#: editor/find_in_files.cpp
#, fuzzy
msgid "Folder:"
-msgstr "Carpeta: "
+msgstr "Carpeta:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtros"
+msgstr "Filtros:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3228,7 +3222,8 @@ msgid "Group name already exists."
msgstr "El nombre del grupo ya existe."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "nombre de Grupo inválido."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3477,14 +3472,13 @@ msgid "Activate now?"
msgstr "¿Activar ahora?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Crear polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editar polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3492,25 +3486,27 @@ msgid "Insert Point"
msgstr "Insertar punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Editar polígono (quitar punto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Quitar polígono y punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Crear un nuevo polígono desde cero"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Crear puntos."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Editar polígono existente:\n"
"Clic izquierdo: Mover punto.\n"
@@ -3518,8 +3514,9 @@ msgstr ""
"Clic derecho: Borrar punto."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Eliminar puntos"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Borrar puntos."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3567,15 +3564,6 @@ msgstr "Seleccionar y mover puntos, crear puntos con clic derecho."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Crear puntos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Borrar puntos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Punto"
@@ -3659,7 +3647,6 @@ msgstr ""
"no se pudieron obtener los nombres de las pistas."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Añadir Nodo..."
@@ -4198,7 +4185,7 @@ msgstr "Todos"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordenar:"
@@ -4354,18 +4341,19 @@ msgid "Paste Pose"
msgstr "Pegar pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Zoom out"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Resetear el Zoom"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Zoom in"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Modo de selección"
@@ -4553,8 +4541,9 @@ msgid "Show Viewport"
msgstr "Ver viewport"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Mostrar iconos de grupo y bloqueo"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4627,8 +4616,17 @@ msgstr ""
"Arrastrar y soltar + Alt : Cambiar tipo de nodo"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Crear Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Crear polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar polígono (quitar punto)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4729,37 +4727,9 @@ msgid "Item List Editor"
msgstr "Editor de lista de elementos"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"No se ha encontrado el recurso OccluderPolygon2D en este nodo.\n"
-"¿Crear uno y asignarlo?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear polígono oclusor"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crea un nuevo polígono desde cero."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Editar polígono existente:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Clic izquierdo: Mover punto."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + LMB: Dividir Segmento."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Clic derecho: Borrar punto."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "¡La malla está vacía!"
@@ -5135,6 +5105,11 @@ msgid "Add Point to Curve"
msgstr "Añadir punto a curva"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Cerrar curva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Mover Punto en Curva"
@@ -5162,6 +5137,11 @@ msgid "Click: Add Point"
msgstr "Clic: Añadir Punto"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Dividir segmento (en curva)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Clic derecho: Eliminar punto"
@@ -5177,11 +5157,6 @@ msgstr "Añadir punto (en espacio vacío)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Dividir segmento (en curva)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Eliminar punto"
@@ -5238,6 +5213,10 @@ msgstr "Eliminar punto Out-Control"
msgid "Remove In-Control Point"
msgstr "Eliminar punto In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Dividir segmento (en curva)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Mover unión"
@@ -5248,10 +5227,20 @@ msgid ""
msgstr "La propiedad esqueleto del Polygon2D no apunta a un nodo Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Sincronizar huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Sin textura en este nodo.\n"
+"Asigná una textura para poder editar la región."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Crear mapa UV"
@@ -5288,10 +5277,21 @@ msgid "Transform UV Map"
msgstr "Transformar Mapa UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipo de transformación"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Pintar peso de huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor UV de polígonos en 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor UV de polígonos en 2D"
@@ -5312,11 +5312,8 @@ msgid "Bones"
msgstr "Huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Crear polígono"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Mover punto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5344,19 +5341,23 @@ msgid "Scale Polygon"
msgstr "Escalar polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Conectar dos puntos para crear una división"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Selecciona una división para borrarla"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Pintar pesos con la intensidad especificada"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "Despintar pesos con la intensidad especificada"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5495,19 +5496,23 @@ msgid "Error saving file!"
msgstr "¡Error guardando archivo!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Error al guardar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Error al guardar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Error al importar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Error al importar"
#: editor/plugins/script_editor_plugin.cpp
@@ -5527,6 +5532,14 @@ msgid "Import Theme"
msgstr "Importar tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Error al guardar el tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Error al guardar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Guardar tema como..."
@@ -5567,8 +5580,9 @@ msgid "File"
msgstr "Archivo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Nuevo TextFile"
+#, fuzzy
+msgid "Open..."
+msgstr "Abrir"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5597,6 +5611,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importar tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recargar tema"
@@ -5605,10 +5624,6 @@ msgid "Save Theme"
msgstr "Guardar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Guardar tema como"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Cerrar documentación"
@@ -5717,6 +5732,10 @@ msgstr "(ignorar)"
msgid "Go to Function"
msgstr "Ir a función..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Estándar"
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Sólo se pueden arrastrar/soltar recursos del sistema de archivos."
@@ -5749,10 +5768,6 @@ msgstr "Poner en mayúsculas"
msgid "Syntax Highlighter"
msgstr "Resaltador de sintaxis"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Estándar"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5948,8 +5963,9 @@ msgid "Pitch"
msgstr "Altura"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Yaw"
-msgstr ""
+msgstr "Girar desde eje vertical"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6452,12 +6468,18 @@ msgid "Set Region Rect"
msgstr "Establecer rectángulo de región"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Establecer handle"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Ninguno>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ninguno"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6685,11 +6707,11 @@ msgstr "Mover a la derecha"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Voltear horizontalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Voltear verticalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -6697,11 +6719,13 @@ msgid "Clear transform"
msgstr "Transformar"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Agregar Textura(s) al TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Quitar textura actual del TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6713,15 +6737,35 @@ msgid "Merge from Scene"
msgstr "Unir desde escena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Seleccione sub-tile para utilizar como icono, éste se utilizará también en "
-"enlazados automáticos no válidos."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Pegar animación"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Borrar puntos."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Crea un nuevo polígono desde cero."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
msgstr "Mostrar nombres de tiles (mantener Tecla Alt)"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6755,21 +6799,32 @@ msgstr ""
"Haz clic en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "¿Eliminar los archivos seleccionados?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"Clic izq: Activar bit.\n"
-"Clic der: Desactivar bit.\n"
+"Seleccionar sub-tile editado actualmente.\n"
"Clic en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Eliminar puntos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Seleccionar sub-tile editado actualmente.\n"
+"Clic izq: Activar bit.\n"
+"Clic der: Desactivar bit.\n"
"Clic en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6791,11 +6846,21 @@ msgstr ""
"Clic en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Seleccionar sub-tile para cambiar su prioridad.\n"
+"Clic en otro Tile para editarlo."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Esta propiedad no se puede cambiar."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Tile Set"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6811,6 +6876,11 @@ msgid "Light"
msgstr "Luz"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Añadir Nodo..."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
@@ -6851,7 +6921,7 @@ msgstr "Añadir..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Presets de Exportación:"
#: editor/project_export.cpp
@@ -8352,7 +8422,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "el argumento step es cero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8965,12 +9036,11 @@ msgstr "Buscar en VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Obtener %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Establecer "
+msgstr "Establecer %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9070,6 +9140,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"La animación CPUParticles2D requiere el uso de un CanvasItemMaterial con "
+"\"Particles Animation\" activado."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9127,6 +9199,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"La animación Particles2D requiere el uso de un CanvasItemMaterial con "
+"\"Particles Animation\" activado."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9273,7 +9347,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
"Nada es visible porque las mallas no se han asignado a los pases de dibujo."
@@ -9282,6 +9356,8 @@ msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"La animación CPUParticles requiere el uso de un SpatialMaterial con "
+"\"Billboard Particles\" activado."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9312,6 +9388,8 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"La animación de partículas requiere el uso de un SpatialMaterial con "
+"\"Billboard Particles\" activado."
#: scene/3d/path.cpp
#, fuzzy
@@ -9326,7 +9404,9 @@ msgstr ""
"PathFollow2D solo funciona cuando está colocado como hijo de un nodo Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9433,6 +9513,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "La raíz del AnimationPlayer no es un nodo válido."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Modo Raw"
@@ -9449,6 +9533,10 @@ msgstr "¡Alerta!"
msgid "Please Confirm..."
msgstr "Por favor, confirma..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9461,7 +9549,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Si exp_edit es `true` min_value debe ser > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9517,10 +9605,6 @@ msgstr "Tamaño de tipografía incorrecto."
msgid "Input"
msgstr "Entrada"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ninguno"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Fuente inválida para el shader."
@@ -9537,6 +9621,59 @@ msgstr "Asignación a uniform."
msgid "Varyings can only be assigned in vertex function."
msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+#~ msgid "Create Poly"
+#~ msgstr "Crear polígono"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Crear un nuevo polígono desde cero"
+
+#~ msgid "Zoom out"
+#~ msgstr "Zoom out"
+
+#~ msgid "Zoom in"
+#~ msgstr "Zoom in"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Crear Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "No se ha encontrado el recurso OccluderPolygon2D en este nodo.\n"
+#~ "¿Crear uno y asignarlo?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Editar polígono existente:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Clic izquierdo: Mover punto."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl + LMB: Dividir Segmento."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Clic derecho: Borrar punto."
+
+#~ msgid "New TextFile"
+#~ msgstr "Nuevo TextFile"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Guardar tema como"
+
+#~ msgid "<None>"
+#~ msgstr "<Ninguno>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Seleccione sub-tile para utilizar como icono, éste se utilizará también "
+#~ "en enlazados automáticos no válidos."
+
+#~ msgid "Zoom:"
+#~ msgstr "Zoom:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "¿Estás seguro/a que quieres quitar todas las conexiones de el/la \""
@@ -10271,9 +10408,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
#~ msgid "Source Font:"
#~ msgstr "Tipografía elegida:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Tamaño de la tipografía elegida:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Recurso de destino:"
@@ -11149,13 +11283,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
#~ msgid "Scale Region Editor"
#~ msgstr "Editor de Regiones de Escalado"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "Sin textura en este nodo.\n"
-#~ "Asigná una textura para poder editar la región."
-
#~ msgid "Inherit Scene"
#~ msgstr "Heredar Escena"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 133c013958..93684a56c4 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-21 19:08+0000\n"
+"PO-Revision-Date: 2018-12-13 14:39+0100\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -256,7 +256,6 @@ msgstr "Crear %d NUEVOS tracks e insertar claves?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -407,12 +406,10 @@ msgid "Delete Selection"
msgstr "Eliminar Selección"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Ir a Paso Próximo"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Ir a Paso Previo"
@@ -536,15 +533,19 @@ msgstr "Reemplazar Todo"
msgid "Selection Only"
msgstr "Solo Selección"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom In"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom Out"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Resetear el Zoom"
@@ -553,8 +554,8 @@ msgid "Warnings:"
msgstr "Advertencias:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Zoom:"
+msgid "Font Size:"
+msgstr "Tamaño de Tipografía:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -667,9 +668,9 @@ msgid "Edit Connection: "
msgstr "Editar Conexión: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "¿Estás seguro/a que querés quitar todas las conexiones de esta señal?"
+msgstr ""
+"¿Estás seguro/a que querés quitar todas las conexiones de la señal \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -714,8 +715,8 @@ msgid "Recent:"
msgstr "Recientes:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Buscar:"
@@ -764,8 +765,7 @@ msgid "Resource"
msgstr "Recursos"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ruta"
@@ -822,10 +822,8 @@ msgid "Error loading:"
msgstr "Error cargando:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr ""
-"La escena falló al cargar debido a las siguientes dependencias faltantes:"
+msgstr "Fallo la carga debido a dependencias faltantes:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1232,8 +1230,7 @@ msgid "Node Name:"
msgstr "Nombre de Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nombre"
@@ -1311,24 +1308,21 @@ msgid "File Exists, Overwrite?"
msgstr "El Archivo Existe, Sobreescribir?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Seleccionar esta Carpeta"
+msgstr "Seleccionar Esta Carpeta"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "Copiar Ruta"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Abrir en el Explorador de Archivos"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Mostrar en Gestor de Archivos"
+msgstr "Mostrar en Explorador de Archivos"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1471,19 +1465,16 @@ msgid "Methods"
msgstr "Métodos"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Métodos"
+msgstr "Métodos:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Propiedades"
+msgstr "Propiedades de Tema"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Propiedades:"
+msgstr "Propiedades de Tema:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1510,14 +1501,12 @@ msgid "Constants:"
msgstr "Constantes:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Descripción"
+msgstr "Descripción de Clase"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Descripción:"
+msgstr "Descripción de Clase:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1534,14 +1523,12 @@ msgstr ""
"url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Descripción de Propiedad:"
+msgstr "Descripción de Propiedades"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "Descripción de Propiedad:"
+msgstr "Descripción de Propiedades:"
#: editor/editor_help.cpp
msgid ""
@@ -1552,12 +1539,10 @@ msgstr ""
"[color=$color][url=$url]contribuyendo una[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descripción de Métodos:"
+msgstr "Descripción de Método"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "Descripción de Métodos:"
@@ -1575,49 +1560,40 @@ msgid "Search Help"
msgstr "Buscar en la Ayuda"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Mostrar Normal"
+msgstr "Mostrar Todo"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Clases"
+msgstr "Solo Clases"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Métodos"
+msgstr "Solo Métodos"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Señales"
+msgstr "Solo Señales"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constantes"
+msgstr "Solo Constantes"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Propiedades"
+msgstr "Solo Propiedades"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Propiedades"
+msgstr "Solo Propiedades de Tema"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Miembros"
+msgstr "Tipo de Miembro"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Clase:"
+msgstr "Clase"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1717,6 +1693,15 @@ msgstr "Esta operación no puede hacerse sin una raíz de árbol."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Esta escena no puede ser guardada porque hay una inclusión cíclica de "
+"instanciado.\n"
+"Por favor resolvela y probá de nuevo."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1725,7 +1710,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "No se puede sobrescribir una escena que todavía esta abierta!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1988,13 +1973,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "No se pudo cargar el script de addon desde la ruta: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"No se pudo cargar el script de addon desde la ruta: El script '%s' no está "
-"en modo tool."
+"No se pudo cargar el script de addon desde la ruta: '%s' Parece haber un "
+"error en el código. Por favor, revisá la sintaxis."
#: editor/editor_node.cpp
msgid ""
@@ -2050,7 +2034,6 @@ msgstr "Por Defecto"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Mostrar en Sistema de Archivos"
@@ -2135,9 +2118,8 @@ msgid "Save Scene"
msgstr "Guardar Escena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
-msgstr "Guardar todas las Escenas"
+msgstr "Guardar Todas las Escenas"
#: editor/editor_node.cpp
msgid "Close Scene"
@@ -2165,7 +2147,7 @@ msgid "Undo"
msgstr "Deshacer"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Rehacer"
@@ -2189,7 +2171,7 @@ msgstr "Configuración de Proyecto"
msgid "Export"
msgstr "Exportar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Herramientas"
@@ -2620,9 +2602,17 @@ msgstr "Asignar.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"No se puede crear una ViewportTexture en recursos guardados como archivo.\n"
+"El recurso debe pertenecer a una escena."
#: editor/editor_properties.cpp
msgid ""
@@ -2631,13 +2621,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"No se puede crear una ViewportTexture en este recurso porque no esta "
+"asignado como local a la escena.\n"
+"Por favor activá la propiedad 'local a escena' en él (y en todos los "
+"recursos que lo contienen hasta un nodo)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Seleccionar un Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nuevo Script"
@@ -2949,9 +2942,8 @@ msgstr ""
"de tipos de archivo!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoritos:"
+msgstr "Favoritos"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3037,14 +3029,12 @@ msgid "Instance"
msgstr "Instancia"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favoritos:"
+msgstr "Agregar a favoritos"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Quitar del Grupo"
+msgstr "Quitar de favoritos"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3066,7 +3056,7 @@ msgstr "Duplicar..."
msgid "Move To..."
msgstr "Mover A..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Nuevo Script.."
@@ -3075,14 +3065,12 @@ msgid "New Resource..."
msgstr "Nuevo Recurso..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "Expandir todos"
+msgstr "Expandir Todos"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "Colapsar todos"
+msgstr "Colapsar Todos"
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3104,9 +3092,8 @@ msgid "Re-Scan Filesystem"
msgstr "Reexaminar Sistema de Archivos"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Act/Desact. Modo"
+msgstr "Act/Desact. Modo Partido"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3142,24 +3129,20 @@ msgid "Create Script"
msgstr "Crear Script"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
-msgstr "Encontrar en archivos"
+msgstr "Buscar en archivos"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Encontrar: "
+msgstr "Buscar:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Carpeta: "
+msgstr "Carpeta:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtros"
+msgstr "Filtros:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3199,7 +3182,8 @@ msgid "Group name already exists."
msgstr "El nombre del grupo ya existe."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "nombre de Grupo inválido."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3336,14 +3320,12 @@ msgid "Failed to load resource."
msgstr "Fallo al cargar recurso."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
-msgstr "Expandir todas las propiedades"
+msgstr "Expandir Todas las Propiedades"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
-msgstr "Colapsar todas las propiedades"
+msgstr "Colapsar Todas las Propiedades"
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3447,14 +3429,13 @@ msgid "Activate now?"
msgstr "Activar ahora?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Crear Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editar Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3462,25 +3443,27 @@ msgid "Insert Point"
msgstr "Insertar Punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Editar Polígono (Remover Punto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Remover Polígono y Punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Crear un nuevo polígono desde cero"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Crear puntos."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Editar polígono existente:\n"
"Click izq: Mover Punto.\n"
@@ -3488,8 +3471,9 @@ msgstr ""
"Click der: Eliminar Punto."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Eliminar puntos"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Borrar puntos."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3537,15 +3521,6 @@ msgstr "Seleccionar y mover puntos, crear puntos con click derecho."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Crear puntos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Borrar puntos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Punto"
@@ -3629,7 +3604,6 @@ msgstr ""
"no se pudieron obtener los nombres de las pistas."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Agregar Nodo.."
@@ -4168,7 +4142,7 @@ msgstr "Todos"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordenar:"
@@ -4299,9 +4273,8 @@ msgid "Resize CanvasItem"
msgstr "Redimensionar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Rotar CanvasItem"
+msgstr "Escalar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4324,18 +4297,19 @@ msgid "Paste Pose"
msgstr "Pegar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Zoom out"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Reset de Zoom"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Zoom in"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Modo Seleccionar"
@@ -4366,9 +4340,8 @@ msgid "Rotate Mode"
msgstr "Modo Rotar"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Modo de Escalado (R)"
+msgstr "Modo de Escalado"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4467,9 +4440,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Esqueleto"
+msgstr "Opciones de Esqueleto"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4523,7 +4495,7 @@ msgstr "Mostrar Viewport"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Mostrar Grupo Y Bloquear Iconos"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4596,8 +4568,17 @@ msgstr ""
"Drag & drop + Alt : Cambiar tipo de nodo"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Crear Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Crear Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar Polígono (Remover Punto)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4698,37 +4679,9 @@ msgid "Item List Editor"
msgstr "Editor de Lista de Items"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"No hay ningún recurso OccluderPolygon2D en este nodo.\n"
-"Crear y asignar uno?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear Polígono Oclusor"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crear un nuevo polígono de cero."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Editar polígono existente:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Click. Izq: Mover Punto."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+Click Izq.: Partir Segmento en Dos."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Click Der.: Borrar Punto."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "El Mesh está vacío!"
@@ -4965,9 +4918,8 @@ msgid "Create Navigation Polygon"
msgstr "Crear Polígono de Navegación"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Generar Rect. de Visibilidad"
+msgstr "Generando Rect. de Visibilidad"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5099,6 +5051,11 @@ msgid "Add Point to Curve"
msgstr "Agregar Punto a Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Cerrar Curva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Mover Punto en Curva"
@@ -5126,6 +5083,11 @@ msgid "Click: Add Point"
msgstr "Click: Agregar Punto"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Partir Segmento (en curva)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Click Derecho: Eliminar Punto"
@@ -5141,11 +5103,6 @@ msgstr "Agregar Punto (en espacio vacío)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Partir Segmento (en curva)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Eliminar Punto"
@@ -5202,6 +5159,10 @@ msgstr "Quitar Punto Out-Control"
msgid "Remove In-Control Point"
msgstr "Quitar Punto In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Partir Segmento (en curva)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Mover unión"
@@ -5212,10 +5173,20 @@ msgid ""
msgstr "La propiedad esqueleto del Polygon2D no apunta a un nodo Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Sincronizar Huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Sin textura en este nodo.\n"
+"Asigná una textura para poder editar la región."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Crear Mapa UV"
@@ -5252,10 +5223,21 @@ msgid "Transform UV Map"
msgstr "Transformar Mapa UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipo de Transformación"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Pintar peso de huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor UV de Polígonos 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor UV de Polígonos 2D"
@@ -5276,11 +5258,8 @@ msgid "Bones"
msgstr "Huesos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Crear Polígono"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Mover Punto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5308,19 +5287,23 @@ msgid "Scale Polygon"
msgstr "Escalar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Conectar dos puntos para crear una división"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Seleccioná una división para borrarla"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Pintar pesos con la intensidad especificada"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "Despintar pesos con la intensidad especificada"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5446,9 +5429,8 @@ msgid "Error writing TextFile:"
msgstr "Error al escribir el TextFile:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "Error no se pudo cargar el archivo."
+msgstr "Error: no se pudo cargar el archivo."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error could not load file."
@@ -5459,19 +5441,23 @@ msgid "Error saving file!"
msgstr "Error guardando archivo!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Error al guardar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Error al guardar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Error al importar el tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Error al importar"
#: editor/plugins/script_editor_plugin.cpp
@@ -5491,6 +5477,14 @@ msgid "Import Theme"
msgstr "Importar Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Error al guardar el tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Error al guardar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Guardar Tema Como..."
@@ -5531,8 +5525,9 @@ msgid "File"
msgstr "Archivo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Nuevo Archivo de Texto"
+#, fuzzy
+msgid "Open..."
+msgstr "Abrir"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5547,7 +5542,6 @@ msgid "Copy Script Path"
msgstr "Copiar Ruta de Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Previo en Historial"
@@ -5561,6 +5555,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importar Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recargar Tema"
@@ -5569,10 +5568,6 @@ msgid "Save Theme"
msgstr "Guardar Tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Guardar Tema Como"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Cerrar Docs"
@@ -5619,9 +5614,8 @@ msgid "Keep Debugger Open"
msgstr "Mantener el Depurador Abierto"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "Depurar con editor externo"
+msgstr "Depurar con Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5664,9 +5658,8 @@ msgid "Debugger"
msgstr "Depurador"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
-msgstr "Resultados de la búsqueda"
+msgstr "Resultados de la Búsqueda"
#: editor/plugins/script_text_editor.cpp
msgid "Line"
@@ -5677,9 +5670,12 @@ msgid "(ignore)"
msgstr "(ignorar)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Ir a Función..."
+msgstr "Ir a Función"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Estándar"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5713,10 +5709,6 @@ msgstr "Capitalizar"
msgid "Syntax Highlighter"
msgstr "Resaltador de sintaxis"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Estándar"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5768,14 +5760,12 @@ msgid "Trim Trailing Whitespace"
msgstr "Eliminar Espacios Sobrantes al Final"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Convertir Indentación En Espacios"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
-msgstr "Convertir Indentación En Tabs"
+msgstr "Convertir Indentación En Tabulaciones"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5791,31 +5781,26 @@ msgid "Remove All Breakpoints"
msgstr "Quitar Todos los Breakpoints"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
-msgstr "Ir a Próximo Breakpoint"
+msgstr "Ir al Breakpoint Siguiente"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
-msgstr "Ir a Anterior Breakpoint"
+msgstr "Ir al Breakpoint Anterior"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
msgstr "Encontrar Anterior"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
-msgstr "Encontrar en archivos..."
+msgstr "Buscar en Archivos..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Ir a Función..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Ir a Línea..."
@@ -5913,7 +5898,7 @@ msgstr "Altura"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Yaw"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6080,9 +6065,8 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de Velocidad de Vista Libre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "Trabar Rotación de Vista"
+msgstr "Rotación de Vista Trabada"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6416,12 +6400,18 @@ msgid "Set Region Rect"
msgstr "Setear Region Rect"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Setear Handle"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Ninguno>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ninguno"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6584,9 +6574,8 @@ msgid "Fix Invalid Tiles"
msgstr "Corregir Tiles Inválidos"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Centrar Selección"
+msgstr "Cortar Selección"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6633,39 +6622,37 @@ msgid "Pick Tile"
msgstr "Elegir Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Mover Selección"
+msgstr "Copiar Selección"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Modo Rotar"
+msgstr "Rotar a la izquierda"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Mover a la Derecha"
+msgstr "Rotar a la derecha"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Espejar horizontalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Espejar verticalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Transform"
+msgstr "Reestablecer transform"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Agregar Textura(s) al TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Quitar Textura actual del TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6677,19 +6664,38 @@ msgid "Merge from Scene"
msgstr "Mergear desde Escena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Selectionar sub-tile para usar como icono, esta también sera usada en "
-"bindings inválidos de autotile."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Mostrar nombres de tiles (mantener Tecla Alt)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Pegar Animación"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Borrar puntos."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Crear un nuevo polígono de cero."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Mostrar nombres de tiles (mantener Tecla Alt)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
msgstr "¿Quitar Textura Seleccionada y TODOS LOS TILES que la usen?"
@@ -6706,9 +6712,8 @@ msgid "Merge from scene?"
msgstr "¿Mergear desde escena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " archivo(s) no fueron agregados porque ya estaban en la lista."
+msgstr "%s archivo(s) no fueron agregados porque ya estaban en la lista."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6719,21 +6724,32 @@ msgstr ""
"Click en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Eliminar archivos seleccionados?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"Click izq: Activar bit.\n"
-"Click der: Desactivar bit.\n"
+"Seleccionar sub-tile editado actualmente.\n"
"Click en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Eliminar puntos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Seleccionar sub-tile editado actualmente.\n"
+"Click izq: Activar bit.\n"
+"Click der: Desactivar bit.\n"
"Click en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6755,11 +6771,21 @@ msgstr ""
"Click en otro Tile para editarlo."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Seleccionar sub-tile para cambiar su prioridad.\n"
+"Click en otro Tile para editarlo."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Esta propiedad no se puede cambiar."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Tile Set"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6775,6 +6801,11 @@ msgid "Light"
msgstr "Luz"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Agregar Nodo.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
@@ -6797,14 +6828,12 @@ msgstr ""
"corruptas:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "recién soltado"
+msgstr "Release"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportando para %s"
+msgstr "Exportar Todo"
#: editor/project_export.cpp
msgid "Presets"
@@ -6816,8 +6845,8 @@ msgstr "Agregar..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "Presets de Exportación:"
+msgid "Export Path"
+msgstr "Ruta de Exportación:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6882,14 +6911,12 @@ msgid "Export PCK/Zip"
msgstr "Exportar PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Modo de Exportación:"
+msgstr "¿Modo de Exportación?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Exportar"
+msgstr "Exportar Todos"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7580,7 +7607,6 @@ msgid "Step"
msgstr "Paso"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "Cantidad en la que se incrementa el contador por cada nodo"
@@ -7589,7 +7615,6 @@ msgid "Padding"
msgstr "Relleno"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7738,6 +7763,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Desactivar \"editable_instance\" causara que todas las propiedades del nodo "
+"vuelvan a sus valores por defecto."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7813,9 +7840,8 @@ msgid "Clear Inheritance"
msgstr "Limpiar Herencia"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Abrir la documentación online de Godot"
+msgstr "Abrir documentación"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7830,9 +7856,8 @@ msgid "Change Type"
msgstr "Cambiar Tipo"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Abrir Script"
+msgstr "Extender Script"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7996,9 +8021,8 @@ msgid "Path is empty"
msgstr "La ruta está vacía"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "El sprite esta vacío!"
+msgstr "Nombre de archivo vacio"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8089,9 +8113,8 @@ msgid "Bytes:"
msgstr "Bytes:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "Frames del Stack"
+msgstr "Stack Trace"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8318,7 +8341,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "el argumento step es cero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8542,7 +8566,7 @@ msgstr "Fin del stack trace de excepción interna"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "Hacer Bake de NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8929,12 +8953,11 @@ msgstr "Buscar en VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Obtener %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Set "
+msgstr "Asignar %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9033,6 +9056,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animar CPUParticles2D requiere el uso de un CanvasItemMaterial con "
+"\"Particles Animation\" activado."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9088,6 +9113,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animar de Particles2D requiere el uso de un CanvasItemMaterial con "
+"\"Particles Animation\" activado."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9232,15 +9259,16 @@ msgstr ""
"shape!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Nada visible ya que no se asignó ningún mesh."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"Animar CPUParticles requiere el uso de un SpatialMaterial con \"Billboard "
+"Particles\" activado."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9269,22 +9297,28 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Animar Particles requiere el uso de un SpatialMaterial con \"Billboard "
+"Particles\" activado."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D sólo funciona cuando está seteado como hijo de un nodo Path2D."
+"PathFollow solo funciona cuando está asignado como hijo de un nodo Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D sólo funciona cuando está seteado como hijo de un nodo Path2D."
+"OrientedPathFollow solo funciona cuando esta asignado como hijo de un nodo "
+"Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow requiere que los vectores up estén activos en su Path "
+"padre."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9326,15 +9360,14 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Este cuerpo sera ignorado hasta que le asignes un mesh"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Los cambios de tamaño a SoftBody serán sobre escritos por el motor de física "
-"al ejecutar.\n"
-"Cambiá el tamaño de los collision shapes hijos."
+"Los cambios de tamaño a un SoftBody serán sobrescritos por el motor de "
+"física al ejecutar.\n"
+"En su lugar, cambiá el tamaño de los collision shapes hijos."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -9390,6 +9423,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "La raíz del AnimationPlayer no es un nodo válido."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Modo Raw"
@@ -9406,6 +9443,10 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmá, por favor..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9418,7 +9459,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Si exp_edit es verdadero min_value debe ser > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9474,10 +9515,6 @@ msgstr "Tamaño de tipografía inválido."
msgid "Input"
msgstr "Entrada"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ninguno"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Fuente inválida para el shader."
@@ -9494,6 +9531,59 @@ msgstr "Asignación a uniform."
msgid "Varyings can only be assigned in vertex function."
msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+#~ msgid "Create Poly"
+#~ msgstr "Crear Polígono"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Crear un nuevo polígono desde cero"
+
+#~ msgid "Zoom out"
+#~ msgstr "Zoom out"
+
+#~ msgid "Zoom in"
+#~ msgstr "Zoom in"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Crear Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "No hay ningún recurso OccluderPolygon2D en este nodo.\n"
+#~ "Crear y asignar uno?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Editar polígono existente:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Click. Izq: Mover Punto."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+Click Izq.: Partir Segmento en Dos."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Click Der.: Borrar Punto."
+
+#~ msgid "New TextFile"
+#~ msgstr "Nuevo Archivo de Texto"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Guardar Tema Como"
+
+#~ msgid "<None>"
+#~ msgstr "<Ninguno>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Selectionar sub-tile para usar como icono, esta también sera usada en "
+#~ "bindings inválidos de autotile."
+
+#~ msgid "Zoom:"
+#~ msgstr "Zoom:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "¿Estás seguro/a que querés quitar todas las conexiones de el/la \""
@@ -10217,9 +10307,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
#~ msgid "Source Font:"
#~ msgstr "Tipografía de Origen:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Tamaño de la Tipografía de Origen:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Recurso de Dest:"
@@ -11072,13 +11159,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
#~ msgid "Scale Region Editor"
#~ msgstr "Editor de Regiones de Escalado"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "Sin textura en este nodo.\n"
-#~ "Asigná una textura para poder editar la región."
-
#~ msgid "Inherit Scene"
#~ msgstr "Heredar Escena"
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 4f908a5ad2..2d8350551a 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -13,15 +13,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-21 19:07+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:35+0100\n"
"Last-Translator: Mahdi <sadisticwarlock@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/"
"godot/fa/>\n"
"Language: fa\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -266,7 +268,6 @@ msgstr "ساختن تعداد d% ترک جدید، ودرج کلیدها؟"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -543,15 +544,19 @@ msgstr "جایگزینی همه"
msgid "Selection Only"
msgstr "تنها در قسمت انتخاب شده"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "بزرگنمایی بیشتر"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "بزرگنمایی کمتر"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "بازنشانی بزرگنمایی"
@@ -560,9 +565,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "بزرگنمایی بیشتر"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -727,8 +731,8 @@ msgid "Recent:"
msgstr "اخیر:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "جستجو:"
@@ -779,8 +783,7 @@ msgid "Resource"
msgstr "منبع"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "مسیر"
@@ -1243,8 +1246,7 @@ msgid "Node Name:"
msgstr "نام گره:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1724,6 +1726,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2126,7 +2134,7 @@ msgid "Undo"
msgstr "خنثی کردن (Undo)"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2150,7 +2158,7 @@ msgstr "ترجیحات پروژه"
msgid "Export"
msgstr "صدور"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ابزارها"
@@ -2570,6 +2578,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2586,8 +2600,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "صحنه جدید"
@@ -3019,7 +3032,7 @@ msgstr "انتخاب شده را به دو تا تکثیر کن"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "صحنه جدید"
@@ -3158,7 +3171,7 @@ msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "نام نامعتبر."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3410,46 +3423,48 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "انتخاب شده را تغییر مقیاس بده"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "ویرایش سیگنال"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "برداشتن نقش"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "حذ٠کن"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
-msgstr "حذ٠کن"
+msgid "Erase points."
+msgstr "Ú©Ùندی در آغاز"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3494,17 +3509,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "حذ٠کن"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Ú©Ùندی در آغاز"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3582,7 +3586,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "اÙزودن گره"
@@ -4138,7 +4141,7 @@ msgstr "همه"
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "مرتب‌سازی:"
@@ -4289,21 +4292,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "بزرگنمایی کمتر"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "بزرگنمایی کمتر"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "بزرگنمایی بیشتر"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "انتخاب حالت"
@@ -4562,7 +4563,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4666,35 +4676,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5065,6 +5049,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "ویرایش منحنی گره"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5092,6 +5081,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5107,11 +5100,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5172,6 +5160,10 @@ msgstr "برداشتن نقش"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5183,7 +5175,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5227,10 +5225,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "گشودن ویرایشگر دو بعدی"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5252,12 +5260,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "انتخاب شده را تغییر مقیاس بده"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "برداشتن نقطه"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5284,20 +5288,20 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "نخست، یک تنظیم را انتخاب کنید!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5441,20 +5445,24 @@ msgid "Error saving file!"
msgstr "خطا در بارگذاری:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "خطای بارگذاری قلم."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "خطا در بارگذاری:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "خطای بارگذاری قلم."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "خطا در بارگذاری:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5476,6 +5484,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5518,8 +5534,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "نمایش پرونده ها"
+msgid "Open..."
+msgstr "باز کن"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5549,15 +5565,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "من میبینم ..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5670,6 +5687,10 @@ msgstr ""
msgid "Go to Function"
msgstr "اÙزودن وظیÙÙ‡"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5702,10 +5723,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6423,11 +6440,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6674,12 +6696,12 @@ msgstr "انتقال را در انیمیشن تغییر بده"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "گره(ها) را از درخت اضاÙÙ‡ Ú©Ù†"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "حذ٠نقطهٔ منحنی"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6691,13 +6713,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "مسیر به سمت گره:"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Ú©Ùندی در آغاز"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6727,16 +6770,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "ساختن پوشه"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "حذ٠کن"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "ساختن پوشه"
@@ -6754,12 +6808,19 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "ساختن پوشه"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "صدور مجموعه کاشی"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6776,6 +6837,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "اÙزودن گره"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6816,7 +6882,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "صدور پروژه"
#: editor/project_export.cpp
@@ -8322,7 +8388,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "آرگومان step صÙر است!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9252,7 +9319,7 @@ msgstr ""
"برای آن ایجاد کنید!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9303,7 +9370,9 @@ msgstr ""
"می‌کند."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9401,6 +9470,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9417,6 +9490,10 @@ msgstr "هشدار!"
msgid "Please Confirm..."
msgstr "لطÙاً تأیید کنید…"
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9480,10 +9557,6 @@ msgstr "اندازهٔ قلم نامعتبر."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9501,6 +9574,22 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "بزرگنمایی کمتر"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "بزرگنمایی بیشتر"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "نمایش پرونده ها"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "بزرگنمایی بیشتر"
+
#~ msgid "Class List:"
#~ msgstr "Ùهرست کلاس:"
@@ -9561,9 +9650,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "تغییر حالت بسته شدن ترک انیمشین"
-#~ msgid "Edit Node Curve"
-#~ msgstr "ویرایش منحنی گره"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "ویرایش منحنی انتخاب شده"
@@ -9627,9 +9713,6 @@ msgstr ""
#~ msgid "Thanks!"
#~ msgstr "با تشکر !"
-#~ msgid "I see..."
-#~ msgstr "من میبینم ..."
-
#, fuzzy
#~ msgid "Can't open '%s'."
#~ msgstr "در حال اتصال..."
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 40def6086b..3cd306dcb7 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -12,15 +12,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-04 17:26+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:35+0100\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
"Language: fi\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -254,7 +256,6 @@ msgstr "Luo %d uutta raitaa ja lisää avaimet?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -399,14 +400,12 @@ msgid "Delete Selection"
msgstr "Poista valitut"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Mene seuraavaan vaiheeseen"
+msgstr "Mene seuraavaan askeleeseen"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "Mene edelliseen vaiheeseen"
+msgstr "Mene edelliseen askeleeseen"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -528,15 +527,19 @@ msgstr "Korvaa kaikki"
msgid "Selection Only"
msgstr "Pelkkä valinta"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Lähennä"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Loitonna"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Palauta oletuslähennystaso"
@@ -545,8 +548,8 @@ msgid "Warnings:"
msgstr "Varoitukset:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Lähennä:"
+msgid "Font Size:"
+msgstr "Fontin koko:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -659,9 +662,8 @@ msgid "Edit Connection: "
msgstr "Muokkaa yhteyttä: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Oletko varma, että haluat poistaa kaikki kytkennät tältä signaalilta?"
+msgstr "Oletko varma, että haluat poistaa kaikki kytkennät signaalilta \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -706,8 +708,8 @@ msgid "Recent:"
msgstr "Viimeaikaiset:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Hae:"
@@ -758,8 +760,7 @@ msgid "Resource"
msgstr "Resurssi"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Polku"
@@ -816,9 +817,8 @@ msgid "Error loading:"
msgstr "Virhe ladatessa:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "Skenen lataaminen epäonnistui puuttuvan riippuvuuden takia:"
+msgstr "Lataaminen epäonnistui puuttuvien riippuvuuksien takia:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1225,8 +1225,7 @@ msgid "Node Name:"
msgstr "Solmun nimi:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nimi"
@@ -1304,7 +1303,6 @@ msgid "File Exists, Overwrite?"
msgstr "Tiedosto on jo olemassa, korvaa?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Valitse tämä kansio"
@@ -1313,13 +1311,11 @@ msgid "Copy Path"
msgstr "Kopioi polku"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Avaa tiedostonhallinnassa"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "Näytä tiedostonhallinnassa"
@@ -1464,19 +1460,16 @@ msgid "Methods"
msgstr "Metodit"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Metodit"
+msgstr "Metodit:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Ominaisuudet"
+msgstr "Teeman ominaisuudet"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Ominaisuudet:"
+msgstr "Teeman ominaisuudet:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1503,14 +1496,12 @@ msgid "Constants:"
msgstr "Vakiot:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Kuvaus"
+msgstr "Luokan kuvaus"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Kuvaus:"
+msgstr "Luokan kuvaus:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1527,14 +1518,12 @@ msgstr ""
"sellaisen[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Ominaisuuden kuvaus:"
+msgstr "Ominaisuuksien kuvaukset"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "Ominaisuuden kuvaus:"
+msgstr "Ominaisuuksien kuvaukset:"
#: editor/editor_help.cpp
msgid ""
@@ -1545,14 +1534,12 @@ msgstr ""
"$color][url=$url]kirjoittamalla sellaisen[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Metodin kuvaus:"
+msgstr "Metodien kuvaukset"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Metodin kuvaus:"
+msgstr "Metodien kuvaukset:"
#: editor/editor_help.cpp
msgid ""
@@ -1568,49 +1555,40 @@ msgid "Search Help"
msgstr "Etsi ohjeesta"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Näytä normaali"
+msgstr "Näytä kaikki"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Luokat"
+msgstr "Vain luokat"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Metodit"
+msgstr "Vain metodit"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signaalit"
+msgstr "Vain signaalit"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Vakiot"
+msgstr "Vain vakiot"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Ominaisuudet"
+msgstr "Vain ominaisuudet"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Ominaisuudet"
+msgstr "Vain teeman ominaisuudet"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Jäsenet"
+msgstr "Jäsenen tyyppi"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Luokka:"
+msgstr "Luokka"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1709,6 +1687,15 @@ msgstr "Tätä toimintoa ei voi tehdä ilman että puun juuri on olemassa."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Tätä skeneä ei voida tallentaa, koska ilmentymät on sisällytetty toisiinsa "
+"syklisesti.\n"
+"Ratkaise ensin se ja yritä sitten tallennusta uudelleen."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1717,7 +1704,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Ei voida ylikirjoittaa vielä auki olevaa skeneä!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1970,12 +1957,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Virhe ladattaessa lisäosaa polusta: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Virhe ladattaessa lisäosaa polusta: '%s'. Skripti ei ole työkalu-tilassa."
+"Virhe ladattaessa lisäosaa polusta: '%s'. Koodissa vaikuttaa olevan virhe, "
+"ole hyvä ja tarkista syntaksi."
#: editor/editor_node.cpp
msgid ""
@@ -2026,7 +2013,6 @@ msgstr "Oletus"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Näytä tiedostojärjestelmässä"
@@ -2111,7 +2097,6 @@ msgid "Save Scene"
msgstr "Tallenna skene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Tallenna kaikki skenet"
@@ -2141,7 +2126,7 @@ msgid "Undo"
msgstr "Peru"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Tee uudelleen"
@@ -2165,7 +2150,7 @@ msgstr "Projektin asetukset"
msgid "Export"
msgstr "Vie"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Työkalut"
@@ -2594,9 +2579,18 @@ msgstr "Aseta..."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Ei voida luoda ViewportTexture tietoa tiedostoon tallennetuille "
+"resursseille.\n"
+"Resurssin täytyy kuulua johonkin skeneen."
#: editor/editor_properties.cpp
msgid ""
@@ -2605,13 +2599,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Ei voida luoda ViewportTexture tietoa tälle resurssille, koska sitä ei ole "
+"asetettu paikalliseksi skeneen.\n"
+"Ole hyvä ja vaihda 'local to scene' ominaisuus sille (ja kaikille sen "
+"sisältäville resursseille aina solmuun saakka)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Valitse näyttöruutu"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Uusi skripti"
@@ -2921,9 +2918,8 @@ msgstr ""
"Välimuistia ei tallenneta!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Suosikit:"
+msgstr "Suosikit"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3009,14 +3005,12 @@ msgid "Instance"
msgstr "Luo ilmentymä"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Suosikit:"
+msgstr "Lisää suosikkeihin"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Poista ryhmästä"
+msgstr "Poista suosikeista"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3038,7 +3032,7 @@ msgstr "Kahdenna..."
msgid "Move To..."
msgstr "Siirrä..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Uusi skripti..."
@@ -3047,14 +3041,12 @@ msgid "New Resource..."
msgstr "Uusi resurssi..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "Laajenna kaikki"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "Pienennä kaikki"
+msgstr "Tiivistä kaikki"
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3076,9 +3068,8 @@ msgid "Re-Scan Filesystem"
msgstr "Skannaa tiedostojärjestelmä uudelleen"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Aseta tila"
+msgstr "Aseta jaettu tila"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3113,24 +3104,20 @@ msgid "Create Script"
msgstr "Luo skripti"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Etsi tiedostoista"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Etsi: "
+msgstr "Etsi:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Kansio: "
+msgstr "Kansio:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Suodattimet"
+msgstr "Suodattimet:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3170,7 +3157,8 @@ msgid "Group name already exists."
msgstr "Ryhmän nimi on jo olemassa."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "virheellinen ryhmän nimi."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3308,12 +3296,10 @@ msgid "Failed to load resource."
msgstr "Resurssin lataaminen epäonnistui."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Laajenna kaikki ominaisuudet"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Tiivistä kaikki ominaisuudet"
@@ -3419,14 +3405,13 @@ msgid "Activate now?"
msgstr "Aktivoi nyt?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Luo polygoni"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Muokkaa polygonia"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3434,25 +3419,27 @@ msgid "Insert Point"
msgstr "Lisää piste"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Muokkaa polygonia (poista piste)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Poista polygoni ja piste"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Luo uusi polygoni tyhjästä"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Luo pisteitä."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Muokkaa polygonia:\n"
"Vasen hiirenkorva: Siirrä pistettä.\n"
@@ -3460,8 +3447,9 @@ msgstr ""
"Oikea hiirenkorva: Poista piste."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Poista pisteitä"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Pyyhi pisteitä."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3509,15 +3497,6 @@ msgstr "Valitse ja siirrä pisteitä, luo pisteitä hiiren oikealla napilla."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Luo pisteitä."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Pyyhi pisteitä."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Piste"
@@ -3598,7 +3577,6 @@ msgstr ""
"nimien haku ei onnistu."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Lisää solmu..."
@@ -4136,7 +4114,7 @@ msgstr "Kaikki"
msgid "Plugins"
msgstr "Liitännäiset"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Lajittele:"
@@ -4267,9 +4245,8 @@ msgid "Resize CanvasItem"
msgstr "Muokkaa CanvasItemin kokoa"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Kierrä CanvasItemiä"
+msgstr "Skaalaa CanvasItemiä"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4292,18 +4269,19 @@ msgid "Paste Pose"
msgstr "Liitä asento"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Loitonna"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Palauta lähennys"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Lähennä"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Valitse tila"
@@ -4334,9 +4312,8 @@ msgid "Rotate Mode"
msgstr "Kääntötila"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Skaalaustila (R)"
+msgstr "Skaalaustila"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4435,9 +4412,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Palauttaa objektin aliobjektien mahdollisuuden tulla valituksi."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Luuranko"
+msgstr "Luurangon asetukset"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4491,7 +4467,7 @@ msgstr "Näytä näyttöikkuna"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Näytä ryhmityksen ja lukituksen kuvakkeet"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4564,8 +4540,17 @@ msgstr ""
"Vedä & pudota + Alt: Muuta solmun tyyppiä"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Luo Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Luo polygoni"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Muokkaa polygonia"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Muokkaa polygonia (poista piste)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4666,37 +4651,9 @@ msgid "Item List Editor"
msgstr "Sisällön muokkaus"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Tälle solmulle ei ole OccluderPolygon2D resurssia.\n"
-"Luodaanko ja asetetaanko sellainen?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Luo peittävä polygoni"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Luo uusi piste tyhjästä."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Muokkaa olemassaolevaa polygonia:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "VHP: Siirrä pistettä."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+Vasen hiirennappi: Puolita osa."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "OHP: Pyyhi piste."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh on tyhjä!"
@@ -4934,9 +4891,8 @@ msgid "Create Navigation Polygon"
msgstr "Luo navigointipolygoni"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Kartoita näkyvä alue"
+msgstr "Kartoitetaan näkyvää aluetta"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5068,6 +5024,11 @@ msgid "Add Point to Curve"
msgstr "Lisää käyrään piste"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Sulje käyrä"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Siirrä pistettä käyrällä"
@@ -5095,6 +5056,11 @@ msgid "Click: Add Point"
msgstr "Klikkaa: lisää piste"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Puolita osa (käyrässä)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Oikea klikkaus: Poista piste"
@@ -5110,11 +5076,6 @@ msgstr "Lisää piste (tyhjyydessä)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Puolita osa (käyrässä)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Poista piste"
@@ -5171,6 +5132,10 @@ msgstr "Poista lähtöohjaimen piste"
msgid "Remove In-Control Point"
msgstr "Poista tulo-ohjaimen piste"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Puolita osa (käyrässä)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Siirrä liitosta"
@@ -5181,10 +5146,17 @@ msgid ""
msgstr "Polygon2D solmun luuominaisuus ei osoita Skeleton2D solmuun"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Synkkaa luut"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Luo UV kartta"
@@ -5221,10 +5193,21 @@ msgid "Transform UV Map"
msgstr "Muunna UV kartta"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Muunnoksen tyyppi"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Maalaa luiden painot"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV-editori"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV-editori"
@@ -5245,11 +5228,8 @@ msgid "Bones"
msgstr "Luut"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Luo polygoni"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Siirrä pistettä"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5277,19 +5257,23 @@ msgid "Scale Polygon"
msgstr "Skaalaa polygonia"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Yhdistä kaksi pistettä luodaksesi jaon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Valitse jako poistaaksesi sen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Maalaa painot tietyllä voimakkuudella"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "Poista painojen maalaus tietyllä voimakkuudella"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5415,9 +5399,8 @@ msgid "Error writing TextFile:"
msgstr "Virhe kirjoitettaessa teksitiedostoa:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "Virhe - Ei voitu ladata tiedostoa."
+msgstr "Virhe: ei voitu ladata tiedostoa."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error could not load file."
@@ -5428,19 +5411,23 @@ msgid "Error saving file!"
msgstr "Virhe tallennettaessa tiedostoa!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Virhe tallennettaessa teemaa"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Virhe tallennettaessa"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Virhe tuotaessa teemaa"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Virhe tuonnissa"
#: editor/plugins/script_editor_plugin.cpp
@@ -5460,6 +5447,14 @@ msgid "Import Theme"
msgstr "Tuo teema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Virhe tallennettaessa teemaa"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Virhe tallennettaessa"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Tallenna teema nimellä..."
@@ -5500,8 +5495,9 @@ msgid "File"
msgstr "Tiedosto"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Uusi tekstitiedosto"
+#, fuzzy
+msgid "Open..."
+msgstr "Avaa"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5516,7 +5512,6 @@ msgid "Copy Script Path"
msgstr "Kopioi skriptin polku"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Edellinen historiassa"
@@ -5530,6 +5525,11 @@ msgid "Theme"
msgstr "Teema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Tuo teema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Lataa teema uudelleen"
@@ -5538,10 +5538,6 @@ msgid "Save Theme"
msgstr "Tallenna teema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Tallenna teema nimellä"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Sulje dokumentaatio"
@@ -5588,9 +5584,8 @@ msgid "Keep Debugger Open"
msgstr "Pidä testaaja auki"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "Testaa ulkoisella editorilla"
+msgstr "Debuggaa ulkoisella editorilla"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5633,7 +5628,6 @@ msgid "Debugger"
msgstr "Debuggeri"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "Haun tulokset"
@@ -5646,9 +5640,12 @@ msgid "(ignore)"
msgstr "(sivuuta)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Mene funktioon..."
+msgstr "Mene funktioon"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Standardi"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5682,10 +5679,6 @@ msgstr "Isot alkukirjaimet"
msgid "Syntax Highlighter"
msgstr "Syntaksin korostaja"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Standardi"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5737,12 +5730,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Poista välilyönnit lopusta"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Muuta sisennys välilyönneiksi"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Muuta sisennys sarkaimiksi"
@@ -5753,38 +5744,33 @@ msgstr "Automaattinen sisennys"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Toggle Breakpoint"
-msgstr "Aseta tai poista breakpoint"
+msgstr "Aseta tai poista keskeytyskohta"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr "Poista kaikki breakpointit"
+msgstr "Poista kaikki keskeytyskohdat"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
-msgstr "Mene seuraavaan breakpointiin"
+msgstr "Mene seuraavaan keskeytyskohtaan"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
-msgstr "Mene edelliseen breakpointiin"
+msgstr "Mene edelliseen keskeytyskohtaan"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
msgstr "Etsi edellinen"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "Etsi tiedostoista..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Mene funktioon..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Mene riville..."
@@ -5878,11 +5864,11 @@ msgstr "Animaatioavain lisätty."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pitch"
-msgstr "Sävelkorkeus"
+msgstr "Nyökkäys (pitch)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Käännös (yaw)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6049,9 +6035,8 @@ msgid "Freelook Speed Modifier"
msgstr "Liikkumisen nopeussäädin"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "Lukitse näkymän kierto"
+msgstr "Näkymän kierto lukittu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6385,12 +6370,18 @@ msgid "Set Region Rect"
msgstr "Aseta alueen suorakulmio"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Aseta kahva"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Tarttumisen tila:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Ei mitään>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ei mitään"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6553,9 +6544,8 @@ msgid "Fix Invalid Tiles"
msgstr "Korjaa virheelliset ruudut"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Keskitä valintaan"
+msgstr "Leikkaa valinta"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6602,39 +6592,37 @@ msgid "Pick Tile"
msgstr "Poimi ruutu"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Siirrä valintaa"
+msgstr "Kopioi valinta"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Kääntötila"
+msgstr "Kierrä vasemmalle"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Siirry oikealle"
+msgstr "Kierrä oikealle"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Käännä vaakasuorasti"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Käännä pystysuorasti"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Muunna"
+msgstr "Tyhjennä muunnos"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Lisää tekstuurit ruutuvalikoimaan"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Poista nykyinen tekstuuri ruutuvalikoimasta"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6646,19 +6634,38 @@ msgid "Merge from Scene"
msgstr "Yhdistä skenestä"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Valitse aliruutu, jota käytetään ikonina ja myös virheellisten "
-"automaattiruudutusten ilmaisemiseen."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Näytä ruutujen nimet (pidä Alt-näppäin pohjassa)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Liitä animaatio"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Pyyhi pisteitä."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Create a new polygon."
+msgstr "Luo uusi piste tyhjästä."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Näytä ruutujen nimet (pidä Alt-näppäin pohjassa)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
msgstr "Poista valittu tekstuuri ja KAIKKI RUUDUT, jotka käyttävät sitä?"
@@ -6675,9 +6682,8 @@ msgid "Merge from scene?"
msgstr "Yhdistä skenestä?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " tiedostoa ei lisätty, koska ne ovat jo listalla."
+msgstr "%s tiedostoa ei lisätty, koska ne olivat jo listalla."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6688,21 +6694,32 @@ msgstr ""
"Napsauta toista ruutua muokataksesi sitä."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Poista valitut tiedostot?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"Hiiren vasen: aseta bitti päälle.\n"
-"Hiiren oikea: aseta bitti pois päältä.\n"
+"Valitse muokattavana oleva aliruutu.\n"
"Napsauta toista ruutua muokataksesi sitä."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Poista pisteitä"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Valitse muokattavana oleva aliruutu.\n"
+"Hiiren vasen: aseta bitti päälle.\n"
+"Hiiren oikea: aseta bitti pois päältä.\n"
"Napsauta toista ruutua muokataksesi sitä."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6724,11 +6741,21 @@ msgstr ""
"Napsauta toista ruutua muokataksesi sitä."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Valitse aliruutu muuttaaksesi sen tärkeyttä.\n"
+"Napsauta toista ruutua muokataksesi sitä."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Tätä ominaisuutta ei voi muuttaa."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Ruutuvalikoima"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6744,6 +6771,11 @@ msgid "Light"
msgstr "Valo"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Lisää solmu..."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
@@ -6764,14 +6796,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "Vientimallit tälle alustalle puuttuvat tai ovat viallisia:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "juuri julkaistu"
+msgstr "Julkaisuversio"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Vie"
+msgstr "Viedään kaikki"
#: editor/project_export.cpp
msgid "Presets"
@@ -6783,8 +6813,8 @@ msgstr "Lisää..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "Vie projekti"
+msgid "Export Path"
+msgstr "Vientipolku:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6849,14 +6879,12 @@ msgid "Export PCK/Zip"
msgstr "Vie PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Vientitila:"
+msgstr "Vientitila?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Vie"
+msgstr "Vie kaikki"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7542,7 +7570,6 @@ msgid "Step"
msgstr "Askel"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "Lukumäärä, jolla laskuria kasvatetaan kullekin solmulle"
@@ -7551,13 +7578,12 @@ msgid "Padding"
msgstr "Täyte"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
msgstr ""
"Pienin määrä numeromerkkejä laskurille.\n"
-"Puuttuvat numermerkit täytetään edeltävillä nollilla."
+"Puuttuvat numeromerkit täytetään edeltävillä nollilla."
#: editor/rename_dialog.cpp
msgid "Regular Expressions"
@@ -7700,6 +7726,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"\"editable_instance\" ominaisuuden poistaminen käytöstä palauttaa kaikki "
+"solmun ominaisuudet oletusarvoihin."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7774,9 +7802,8 @@ msgid "Clear Inheritance"
msgstr "Poista perintä"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Avaa Godotin online-dokumentaatio"
+msgstr "Avaa dokumentaatio"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7791,9 +7818,8 @@ msgid "Change Type"
msgstr "Muuta tyyppiä"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Avaa skripti"
+msgstr "Laajenna skriptiä"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7956,9 +7982,8 @@ msgid "Path is empty"
msgstr "Polku on tyhjä"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Sprite on tyhjä!"
+msgstr "Tiedostonimi on tyhjä"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8049,9 +8074,8 @@ msgid "Bytes:"
msgstr "Tavu(j)a:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "Pinokehykset"
+msgstr "Pinojäljitys"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8278,7 +8302,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "askeleen argumentti on nolla!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8503,7 +8528,7 @@ msgstr "Sisemmän poikkeuksen kutsupinon loppu"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "Kehitä NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8889,12 +8914,11 @@ msgstr "Hae VisualScriptistä"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Hae %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Set "
+msgstr "Aseta %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -8992,6 +9016,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"CPUParticles2D animaatio edellyttää CanvasItemMaterial käyttöä niin että "
+"\"Particles Animation\" on kytketty päälle."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9049,6 +9075,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Particles2D animaatio edellyttää CanvasItemMaterial käyttöä niin että "
+"\"Particles Animation\" on kytketty päälle."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9194,17 +9222,16 @@ msgstr ""
"luo sille muotoresurssi!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
-"Mitään ei näy, koska mesheille ei ole asetettu piirtopyyhkäisyjä (draw "
-"passes)."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Mitään ei näy, koska meshiä ei ole asetettu."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"CPUParticles animaatio edellyttää SpatialMaterial käyttöä niin että "
+"\"Billboard Particles\" on kytketty päälle."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9236,22 +9263,26 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Particles animaatio edellyttää SpatialMaterial käyttöä niin että \"Billboard "
+"Particles\" on kytketty päälle."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-"PathFollow2D toimii ainoastaan ollessaan asetettuna Path2D solmun alle."
+msgstr "PathFollow toimii ainoastaan ollessaan asetettuna Path solmun alle."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D toimii ainoastaan ollessaan asetettuna Path2D solmun alle."
+"OrientedPathFollow toimii ainoastaan ollessaan asetettuna Path solmun alle."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow edellyttää, että sen Path isäntäsolmulle on asetettu ylös-"
+"vektorit."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9292,7 +9323,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Tämä kappale sivuutetaan, kunnes asetat meshin"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9354,6 +9384,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "AnimationPlayer juuri ei ole kelvollinen solmu."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Raakatila"
@@ -9370,6 +9404,10 @@ msgstr "Huomio!"
msgid "Please Confirm..."
msgstr "Ole hyvä ja vahvista..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9382,7 +9420,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Jos exp_edit on tosi, min_value täytyy olla > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9438,10 +9476,6 @@ msgstr "Virheellinen fonttikoko."
msgid "Input"
msgstr "Syöte"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ei mitään"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Virheellinen lähde sävyttimelle."
@@ -9458,6 +9492,59 @@ msgstr "Sijoitus uniformille."
msgid "Varyings can only be assigned in vertex function."
msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa."
+#~ msgid "Create Poly"
+#~ msgstr "Luo polygoni"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Luo uusi polygoni tyhjästä"
+
+#~ msgid "Zoom out"
+#~ msgstr "Loitonna"
+
+#~ msgid "Zoom in"
+#~ msgstr "Lähennä"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Luo Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Tälle solmulle ei ole OccluderPolygon2D resurssia.\n"
+#~ "Luodaanko ja asetetaanko sellainen?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Muokkaa olemassaolevaa polygonia:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "VHP: Siirrä pistettä."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+Vasen hiirennappi: Puolita osa."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "OHP: Pyyhi piste."
+
+#~ msgid "New TextFile"
+#~ msgstr "Uusi tekstitiedosto"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Tallenna teema nimellä"
+
+#~ msgid "<None>"
+#~ msgstr "<Ei mitään>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Valitse aliruutu, jota käytetään ikonina ja myös virheellisten "
+#~ "automaattiruudutusten ilmaisemiseen."
+
+#~ msgid "Zoom:"
+#~ msgstr "Lähennä:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Oletko varma, että haluat poistaa kaikki yhteydet kohteesta \""
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index e62b20139a..7ecd4d48ea 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -50,11 +50,13 @@
# Florent Wijanto <f_wijanto@hotmail.com>, 2018.
# Olivier gareau <olivier.gareau@protonmail.com>, 2018.
# Rémi Verschelde <akien@godotengine.org>, 2018.
+# Rémi Bintein <reminus5@hotmail.fr>, 2018.
+# Sylvain Corsini <sylvain.corsini@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-26 16:07+0000\n"
+"PO-Revision-Date: 2018-12-13 14:31+0100\n"
"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
@@ -63,7 +65,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -297,7 +299,6 @@ msgstr "Créer %d NOUVELLES pistes et insérer des clés ?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -379,7 +380,7 @@ msgstr "Anim Déplacer Clés"
#: editor/animation_track_editor.cpp
msgid "Clipboard is empty"
-msgstr "Le presse-papiers est vide !"
+msgstr "Le presse-papiers est vide"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
@@ -452,12 +453,10 @@ msgid "Delete Selection"
msgstr "Supprimer la sélection"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Aller à l'étape suivante"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Aller à l'étape précédente"
@@ -581,15 +580,19 @@ msgstr "Remplacer tout"
msgid "Selection Only"
msgstr "Sélection uniquement"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoomer"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Dézoomer"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Réinitialiser le zoom"
@@ -598,8 +601,8 @@ msgid "Warnings:"
msgstr "Avertissements :"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Agrandissement (%) :"
+msgid "Font Size:"
+msgstr "Taille de police :"
#: editor/code_editor.cpp
msgid "Line:"
@@ -712,7 +715,6 @@ msgid "Edit Connection: "
msgstr "Modifier les connexions : "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "Voulez-vous vraiment supprimer toutes les connexions de ce signal ?"
@@ -734,7 +736,7 @@ msgstr "Édition..."
#: editor/connections_dialog.cpp
msgid "Go To Method"
-msgstr "Aller à la méthode :"
+msgstr "Aller à la méthode"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -759,8 +761,8 @@ msgid "Recent:"
msgstr "Récents :"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Rechercher :"
@@ -811,8 +813,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Chemin"
@@ -870,7 +871,6 @@ msgid "Error loading:"
msgstr "Erreur au chargement :"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
msgstr "La scène n'a pas pu être chargée à cause de dépendances manquantes :"
@@ -1279,8 +1279,7 @@ msgid "Node Name:"
msgstr "Nom de nœud :"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nom"
@@ -1306,7 +1305,7 @@ msgstr "[vide]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr "(Non sauvegardé)"
+msgstr "[non enregistré]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1358,7 +1357,6 @@ msgid "File Exists, Overwrite?"
msgstr "Le fichier existe, l'écraser ?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Sélectionner ce dossier"
@@ -1367,13 +1365,11 @@ msgid "Copy Path"
msgstr "Copier le chemin"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Ouvrir dans le gestionnaire de fichiers"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "Montrer dans le gestionnaire de fichiers"
@@ -1515,22 +1511,19 @@ msgstr "Propriétés :"
#: editor/editor_help.cpp
msgid "Methods"
-msgstr "Méthodes :"
+msgstr "Méthodes"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
msgstr "Méthodes :"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Propriétés"
+msgstr "Propriétés du thème"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Propriétés :"
+msgstr "Propriétés du thème :"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1557,14 +1550,12 @@ msgid "Constants:"
msgstr "Constantes :"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Description"
+msgstr "Description de la classe"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Description :"
+msgstr "Description de la classe :"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1581,12 +1572,10 @@ msgstr ""
"demander un[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Description des propriétés :"
+msgstr "Description des propriétés"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "Description des propriétés :"
@@ -1599,14 +1588,12 @@ msgstr ""
"[color=$color][url=$url]en créant[/url][/color] une !"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Description de la méthode :"
+msgstr "Descriptions des méthodes"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Description de la méthode :"
+msgstr "Descriptions des méthode :"
#: editor/editor_help.cpp
msgid ""
@@ -1622,49 +1609,40 @@ msgid "Search Help"
msgstr "Chercher dans l'aide"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Affichage normal"
+msgstr "Tout afficher"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Classes"
+msgstr "Classes seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Méthodes :"
+msgstr "Méthodes seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Signaux"
+msgstr "Signaux seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constantes"
+msgstr "Constantes seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Propriétés"
+msgstr "Propriétés seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Propriétés"
+msgstr "Propriétés du thème seulement"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Membres"
+msgstr "Type de membre"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Classe :"
+msgstr "Classe"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1763,6 +1741,15 @@ msgstr "Cette opération ne peut être réalisée sans une arborescence racine."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Cette scène ne peut pas être enregistrée du fait d'une dépendance circulaire "
+"à l'instanciation.\n"
+"L'enregistrement ne sera possible qu'une fois ce problème résolu."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1771,7 +1758,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Impossible de ré-écrire une scène encore ouverte !"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -2040,13 +2027,12 @@ msgstr ""
"Impossible de charger le script de l’extension depuis le chemin : '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Impossible de charger le script de l’extension depuis le chemin : '%s' Le "
-"script n'est pas en mode outil."
+"Impossible de charger le script de l’extension depuis le chemin : '%s' Il "
+"semble y avoir une erreur dans le code, merci de vérifier la syntaxe."
#: editor/editor_node.cpp
msgid ""
@@ -2102,7 +2088,6 @@ msgstr "Par défaut"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Montrer dans le système de fichiers"
@@ -2187,7 +2172,6 @@ msgid "Save Scene"
msgstr "Enregistrer la scène"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Enregistrer toutes les scènes"
@@ -2217,7 +2201,7 @@ msgid "Undo"
msgstr "Annuler"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Refaire"
@@ -2241,7 +2225,7 @@ msgstr "Paramètres du projet"
msgid "Export"
msgstr "Exporter"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Outils"
@@ -2613,7 +2597,7 @@ msgstr "Mesure :"
#: editor/editor_profiler.cpp
msgid "Frame Time (sec)"
-msgstr "Temps image (en seconde)"
+msgstr "Temps par trame (seconde)"
#: editor/editor_profiler.cpp
msgid "Average Time (sec)"
@@ -2621,11 +2605,11 @@ msgstr "Temps moyen (seconde)"
#: editor/editor_profiler.cpp
msgid "Frame %"
-msgstr "% d'image"
+msgstr "Trame %"
#: editor/editor_profiler.cpp
msgid "Physics Frame %"
-msgstr "Frame physique %"
+msgstr "Trame physique %"
#: editor/editor_profiler.cpp
msgid "Time:"
@@ -2641,7 +2625,7 @@ msgstr "Self"
#: editor/editor_profiler.cpp
msgid "Frame #:"
-msgstr "Frame # :"
+msgstr "Trame # :"
#: editor/editor_profiler.cpp
msgid "Time"
@@ -2673,9 +2657,20 @@ msgstr "Assigner..."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+"La ressource sélectionnée (%s) ne correspond pas au type attendu pour cette "
+"propriété (%s)."
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Impossible de créer un ViewportTexture sur des ressources enregistrées comme "
+"fichier.\n"
+"La ressource a besoin d'appartenir à une scène."
#: editor/editor_properties.cpp
msgid ""
@@ -2684,13 +2679,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Impossible de créer un ViewportTexture sur cette ressource car elle n'est "
+"pas définie comme locale à la scène.\n"
+"Merci de changer la propriété \"Local To Scene\" de cette ressource (et des "
+"ressources intermédiaires la contenant, jusqu'au nœud qui l'utilise)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Choisissez un Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nouveau script"
@@ -2971,7 +2969,7 @@ msgstr "Versions installées :"
#: editor/export_template_manager.cpp
msgid "Install From File"
-msgstr "Installer depuis fichier :"
+msgstr "Installer depuis fichier"
#: editor/export_template_manager.cpp
msgid "Remove Template"
@@ -3002,9 +3000,8 @@ msgstr ""
"sera pas sauvé !"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoris :"
+msgstr "Favoris"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3091,14 +3088,12 @@ msgid "Instance"
msgstr "Instance"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favoris :"
+msgstr "Ajouter aux favoris"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Supprimer du groupe"
+msgstr "Supprimer des favoris"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3120,7 +3115,7 @@ msgstr "Dupliquer…"
msgid "Move To..."
msgstr "Déplacer vers…"
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Nouveau Script..."
@@ -3129,12 +3124,10 @@ msgid "New Resource..."
msgstr "Nouvelle Ressource…"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "Développer tout"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "Réduire tout"
@@ -3158,9 +3151,8 @@ msgid "Re-Scan Filesystem"
msgstr "Analyser à nouveau le système de fichiers"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Basculer le mode"
+msgstr "Activer/désactiver le mode scindé"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3198,24 +3190,20 @@ msgid "Create Script"
msgstr "Créer un script"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Trouver dans les fichiers"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Trouver : "
+msgstr "Trouver :"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Dossier : "
+msgstr "Dossier :"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtres"
+msgstr "Filtres :"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3255,7 +3243,7 @@ msgid "Group name already exists."
msgstr "Le nom du groupe existe déjà."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Nom de groupe invalide."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3264,11 +3252,11 @@ msgstr "Groupes"
#: editor/groups_editor.cpp
msgid "Nodes not in Group"
-msgstr "Noeuds non groupés"
+msgstr "Nœuds non groupés"
#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
msgid "Filter nodes"
-msgstr "Filtrer les noeuds"
+msgstr "Filtrer les nœuds"
#: editor/groups_editor.cpp
msgid "Nodes in Group"
@@ -3337,7 +3325,7 @@ msgstr "Importation de la scène…"
#: editor/import/resource_importer_scene.cpp
msgid "Generating Lightmaps"
-msgstr "Génération des lightmaps :"
+msgstr "Génération des lightmaps"
#: editor/import/resource_importer_scene.cpp
msgid "Generating for Mesh: "
@@ -3393,12 +3381,10 @@ msgid "Failed to load resource."
msgstr "Impossible de charger la ressource."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Développer toutes les propriétés"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Réduire toutes les propriétés"
@@ -3504,49 +3490,46 @@ msgid "Activate now?"
msgstr "Activer maintenant ?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Créer un polygone"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr "Modifier le polygone"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
-msgstr "Point d'insertion"
+msgstr "Insérer un point"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr "Modifier le polygone (supprimer un point)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr "Retirer Polygone et Point"
+msgid "Remove Polygon And Point"
+msgstr "Supprimer le polygone et le point"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Créer un nouveau polygone à partir de rien"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Créer des points."
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
-"Editer polygones existants :\n"
-"Bouton gauche : Déplacer point\n"
-"Ctrl+Bouton gauche : Diviser section.\n"
-"Bouton droit: Effeacer point."
+"Éditer les points.\n"
+"Bouton gauche : Déplacer le point\n"
+"Bouton droit : Effacer le point"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Supprimer les points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Effacer des points."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3561,7 +3544,7 @@ msgstr "Ajouter une animation"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Load.."
-msgstr "Chargement..."
+msgstr "Charger..."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3592,17 +3575,7 @@ msgstr "Définir la position de mélange dans l'espace"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Select and move points, create points with RMB."
msgstr ""
-"Sélectionner et déplacer les points, créer des points avec le bouton droit "
-"de la souris."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Créer des points."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Effacer des points."
+"Sélectionner et déplacer les points, créer des points avec un clic droit."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3622,7 +3595,7 @@ msgstr "Le triangle existe déjà"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr "BlendSpace2D n'appartient pas à un noeud AnimationTree."
+msgstr "BlendSpace2D n'appartient pas à un nœud AnimationTree."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
@@ -3690,7 +3663,6 @@ msgstr ""
"impossible de récupérer les noms des pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Ajouter un nœud..."
@@ -3784,7 +3756,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr "Lire l'animation sélectionnée à rebours depuis la fin. (Maj + A)"
+msgstr "Lire l'animation sélectionnée à rebours depuis la fin. (Maj+A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Stop animation playback. (S)"
@@ -3792,7 +3764,7 @@ msgstr "Arrêter la lecture de l'animation. (S)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from start. (Shift+D)"
-msgstr "Lire l'animation sélectionnée depuis le début. (Maj + D)"
+msgstr "Lire l'animation sélectionnée depuis le début. (Maj+D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from current pos. (D)"
@@ -3951,8 +3923,8 @@ msgid ""
"Shift+LMB to create connections."
msgstr ""
"Sélectionnez et déplacez les nœuds.\n"
-"Bouton droit pour ajouter de nouveaux nœuds\n"
-"Majuscule+Bouton gauche pour créer des connexions."
+"Bouton droit pour ajouter de nouveaux nœuds.\n"
+"Maj+Bouton gauche pour créer des connexions."
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Create new nodes."
@@ -4229,7 +4201,7 @@ msgstr "Tout"
msgid "Plugins"
msgstr "Extensions"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Trier :"
@@ -4289,7 +4261,7 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr "Précalculer les lightmaps :"
+msgstr "Précalculer les lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp
@@ -4334,7 +4306,7 @@ msgstr "Déplacer le guide horizontal"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Create new horizontal guide"
-msgstr "créer un nouveau guide horizontal"
+msgstr "Créer un nouveau guide horizontal"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Remove horizontal guide"
@@ -4361,9 +4333,8 @@ msgid "Resize CanvasItem"
msgstr "Redimensionner l'élément de canevas"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Pivoter l'élément de canevas"
+msgstr "Mise à l'échelle de CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4386,18 +4357,20 @@ msgid "Paste Pose"
msgstr "Coller la pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Éloigner"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
+"Avertissement : la position et la taille des nœuds enfants d'un conteneur "
+"sont strictement déterminées par leur parent."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr "Réinitialiser le facteur d'agrandissement"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Rapprocher"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Sélectionner le mode"
@@ -4407,7 +4380,7 @@ msgstr "Glisser : tourner"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+Drag: Move"
-msgstr "Alt + Glisser : déplacer"
+msgstr "Alt+Glisser : déplacer"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
@@ -4417,7 +4390,7 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + Bouton droit : sélection détaillée par liste"
+msgstr "Alt+Bouton droit : Sélection détaillée par liste"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Mode"
@@ -4428,9 +4401,8 @@ msgid "Rotate Mode"
msgstr "Mode rotation"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Mode de mise à l'échelle (R)"
+msgstr "Mode de mise à l'échelle"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4439,7 +4411,7 @@ msgid ""
"(same as Alt+RMB in select mode)."
msgstr ""
"Afficher une liste de tous les objets à la position cliquée\n"
-"(identique à Alt+Clic droit en mode sélection)."
+"(identique à Alt+Bouton droit en mode sélection)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
@@ -4529,9 +4501,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Rendre la sélection des enfants de l'objet de nouveau possible."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Squelette"
+msgstr "Configuration du squelette"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4585,7 +4556,7 @@ msgstr "Montrer La fenêtre d'affichage"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Montrer le groupe et verrouiller les icônes"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4658,8 +4629,16 @@ msgstr ""
"Glisser-déposer + Alt : Modifier le type de nœud"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Créer un Poly3D"
+msgid "Create Polygon3D"
+msgstr "Créer un Polygon3D"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Modifier le polygone"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Modifier le polygone (supprimer un point)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4760,36 +4739,9 @@ msgid "Item List Editor"
msgstr "Éditeur de listes d'objets"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Aucune ressource OccluderPolygon2D sur ce nœud. En créer et en attribuer un ?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Créer un polygone occulteur"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Créer un nouveau polygone à partir de rien."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Modifier un polygone existant :"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Bouton gauche : déplacer un point."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Contrôle + Bouton gauche : séparer le segment."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Bouton droit : effacer un point."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Le maillage est vide !"
@@ -5031,9 +4983,8 @@ msgid "Create Navigation Polygon"
msgstr "Créer Polygone de Navigation"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Générer Rect de Visibilité"
+msgstr "Génération du rectangle de visibilité"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5165,6 +5116,10 @@ msgid "Add Point to Curve"
msgstr "Ajouter un point à la courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr "Scinder la courbe"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Déplacer le point dans la courbe"
@@ -5184,7 +5139,7 @@ msgstr "Sélectionner des points"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Shift+Drag: Select Control Points"
-msgstr "Maj. + Glisser : sélectionner des points de contrôle"
+msgstr "Maj+Glisser : sélectionner des points de contrôle"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -5192,13 +5147,17 @@ msgid "Click: Add Point"
msgstr "Clic : ajouter un point"
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Clic gauche : Diviser le segment (en courbe)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
-msgstr "Clic droit : supprimer un point"
+msgstr "Clic droit : Supprimer un point"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
-msgstr "Sélectionner les points de contrôle (Maj. + glisser)"
+msgstr "Sélectionner les points de contrôle (Maj+Glisser)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -5207,11 +5166,6 @@ msgstr "Ajouter un point (dans un espace vide)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Diviser le segment (en courbe)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Supprimer le point"
@@ -5268,6 +5222,10 @@ msgstr "Supprimer point Out-Control"
msgid "Remove In-Control Point"
msgstr "Supprimer point In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Diviser le segment (en courbe)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Déplacer la jointure"
@@ -5276,13 +5234,21 @@ msgstr "Déplacer la jointure"
msgid ""
"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
msgstr ""
-"La propriété squelette du Polygon2D ne pointe pas vers un noeud Skeleton2D"
+"La propriété squelette du Polygon2D ne pointe pas vers un nœud Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Synchroniser les os"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Pas de texture dans ce polygone.\n"
+"Sélectionnez une texture pour pouvoir éditer les UV."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Créer une carte UV"
@@ -5319,8 +5285,16 @@ msgid "Transform UV Map"
msgstr "Transformer la carte UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
-msgstr "Poids de la peinture de l'os"
+msgid "Transform Polygon"
+msgstr "Transformer le polygon"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr "Peindre les poids de l'os"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
+msgstr "Ouvrir l'éditeur d'UV de polygones 2D."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
@@ -5343,24 +5317,20 @@ msgid "Bones"
msgstr "Os"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Créer un polygone"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr "Déplacer le point"
+msgid "Move Points"
+msgstr "Déplacer de points"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
-msgstr "Contrôle: Tourner"
+msgstr "Contrôle : Tourner"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift: Move All"
-msgstr "Maj. : Tout déplacer"
+msgstr "Maj : Tout déplacer"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift+Ctrl: Scale"
-msgstr "Maj.+Contrôle : Mettre à l'échelle"
+msgstr "Maj+Contrôle : Mettre à l'échelle"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Polygon"
@@ -5375,20 +5345,20 @@ msgid "Scale Polygon"
msgstr "Mettre à l'échelle le polygone"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
-msgstr "Relier deux points pour faire une scission"
+msgid "Connect two points to make a split."
+msgstr "Relier deux points pour faire un fractionnement."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
-msgstr "Sélectionnez un fractionnement à effacer"
+msgid "Select a split to erase it."
+msgstr "Sélectionnez un fractionnement à effacer."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
-msgstr "Poids de la peinture avec intensité spécifiée"
+msgid "Paint weights with specified intensity."
+msgstr "Appliquer les poids avec l'intensité spécifiée."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
-msgstr "Poids non peints avec intensité spécifiée"
+msgid "Unpaint weights with specified intensity."
+msgstr "Retirer les poids avec l'intensité spécifiée."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
@@ -5513,7 +5483,6 @@ msgid "Error writing TextFile:"
msgstr "Erreur lors de l'écriture du fichier texte :"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
msgstr "Erreur de chargement de fichier."
@@ -5526,19 +5495,19 @@ msgid "Error saving file!"
msgstr "Erreur lors de l'enregistrement du fichier !"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr "Erreur d'enregistrement du thème"
+msgid "Error while saving theme."
+msgstr "Erreur d'enregistrement du thème."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr "Erreur d'enregistrement"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr "Erreur d'importation du thème"
+msgid "Error importing theme."
+msgstr "Erreur d'importation du thème."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr "Erreur d'importation"
#: editor/plugins/script_editor_plugin.cpp
@@ -5558,6 +5527,14 @@ msgid "Import Theme"
msgstr "Importer un thème"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Erreur d'enregistrement du thème"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Erreur d'enregistrement"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Enregistrer le thème sous…"
@@ -5598,8 +5575,8 @@ msgid "File"
msgstr "Fichier"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Nouveau fichier texte"
+msgid "Open..."
+msgstr "Ouvrir..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5614,7 +5591,6 @@ msgid "Copy Script Path"
msgstr "Copier le chemin du script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Précédent dans l'historique"
@@ -5628,6 +5604,10 @@ msgid "Theme"
msgstr "Thème"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Import Theme..."
+msgstr "Importer un thème..."
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recharger le thème"
@@ -5636,10 +5616,6 @@ msgid "Save Theme"
msgstr "Enregistrer le thème"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Enregistrer le thème sous"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Fermer les documentations"
@@ -5686,7 +5662,6 @@ msgid "Keep Debugger Open"
msgstr "Garder le débogueur ouvert"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
msgstr "Déboguer avec un éditeur externe"
@@ -5731,7 +5706,6 @@ msgid "Debugger"
msgstr "Débogueur"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "Résultats de recherche"
@@ -5744,9 +5718,12 @@ msgid "(ignore)"
msgstr "(ignorer)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Aller à la fonction…"
+msgstr "Aller à la fonction"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Standard"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5780,10 +5757,6 @@ msgstr "Capitaliser"
msgid "Syntax Highlighter"
msgstr "Surligneur de syntaxe"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Standard"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5835,12 +5808,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Supprimer les espaces de fin de ligne"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Convertir indentations en espaces"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Convertir les indentations en tabulations"
@@ -5858,12 +5829,10 @@ msgid "Remove All Breakpoints"
msgstr "Supprimer tous les points d'arrêt"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "Aller au point d'arrêt suivant"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "Aller au point d'arrêt précédent"
@@ -5872,17 +5841,14 @@ msgid "Find Previous"
msgstr "Trouver le précédent"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "Trouver dans les fichiers..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Aller à la fonction…"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Aller à la ligne…"
@@ -5976,11 +5942,11 @@ msgstr "Clé d'animation insérée."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pitch"
-msgstr "Hauteur"
+msgstr "Tangage (latéral)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Lacet (hauteur)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6149,7 +6115,6 @@ msgid "Freelook Speed Modifier"
msgstr "Modificateur de vitesse de la vue libre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
msgstr "Verrouiller la rotation de la vue"
@@ -6168,8 +6133,8 @@ msgid ""
"Alt+RMB: Depth list selection"
msgstr ""
"Glisser : Rotation\n"
-"ALt+glisser : Déplacer\n"
-"Alt + Bouton droit : sélection détaillée par liste"
+"ALt+Glisser : Déplacer\n"
+"Alt+Bouton droit : Sélection détaillée par liste"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -6487,12 +6452,17 @@ msgid "Set Region Rect"
msgstr "Définir région rectangulaire"
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr "Définir la marge"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Mode d'aimantation :"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Aucun>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Aucun"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6655,9 +6625,8 @@ msgid "Fix Invalid Tiles"
msgstr "Résoudre les tuiles invalides"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Centrer sur la sélection"
+msgstr "Couper la sélection"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6704,40 +6673,36 @@ msgid "Pick Tile"
msgstr "Sélectionner une case"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Déplacer la sélection"
+msgstr "Copier la sélection"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Mode rotation"
+msgstr "Rotation à gauche"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Aller à droite"
+msgstr "Rotation à droite"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Retourner horizontalement"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Retourner verticalement"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Transformation"
+msgstr "Supprimer la transformation"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
-msgstr "Ajouter texture(s) au TileSet"
+msgid "Add Texture(s) to TileSet."
+msgstr "Ajouter des textures au TileSet."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr "Supprimer la texture courante du TileSet"
+msgid "Remove selected Texture from TileSet."
+msgstr "Supprimer la texture sélectionnée du TileSet."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6748,19 +6713,35 @@ msgid "Merge from Scene"
msgstr "Fusionner depuis la scène"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr "Copier le masque de bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr "Coller le masque de bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr "Effacer le masque de bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
+msgstr "Créer un nouveau polygone."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr "Circonscrire le polygone dans le Rect de région."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
-"Sélectionner une sous-tuile à utiliser comme icône, celle-ci sera aussi "
-"utilisée pour les liaisons de tuiles automatiques invalides."
+"Activer l'aimantation et afficher la grille (paramétrable via l'Inspecteur)."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Afficher les noms des tuiles (maintenez la touche Alt enfoncée)"
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Afficher les noms des tuiles (maintenez Alt enfoncé)"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected texture and ALL TILES which use it?"
msgstr ""
"Supprimer la texture sélectionnée et TOUTES LES TUILES qui l'utilisent ?"
@@ -6778,9 +6759,8 @@ msgid "Merge from scene?"
msgstr "Fusionner depuis la scène ?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " fichier(s) non ajouté(s) car déjà sur la liste."
+msgstr "%s fichier(s) non ajouté(s) car déjà sur la liste."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6791,21 +6771,29 @@ msgstr ""
"Cliquez sur une autre tuile pour la modifier."
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete selected Rect."
+msgstr "Supprimer le Rect sélectionné."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"Bouton-gauche : Activer le bit\n"
-"Bouton-droit : Désactiver le bit\n"
+"Sélectionner la sous-tuile en cours d'édition.\n"
"Cliquer sur une autre tuile pour l'éditer."
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete polygon."
+msgstr "Supprimer le polygone."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Sélectionner la sous-tuile en cours d'édition.\n"
+"Bouton gauche : Activer le bit.\n"
+"Bouton droit : Désactiver le bit.\n"
"Cliquer sur une autre tuile pour l'éditer."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6827,12 +6815,20 @@ msgstr ""
"Cliquer sur une autre tuile pour l'éditer."
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Sélectionner une sous-tuile pour changer son index Z.\n"
+"Cliquer sur une autre tuile pour l'éditer."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Cette propriété ne peut être changée."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
-msgstr "Jeu de tuiles"
+msgid "TileSet"
+msgstr "TileSet"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vertex"
@@ -6847,6 +6843,10 @@ msgid "Light"
msgstr "Lumière"
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr "Ajouter un nœud..."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
@@ -6867,14 +6867,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "Modèles d'exportation manquants ou corrompus pour cette plateforme :"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "vient d'être relâché"
+msgstr "Publication (release)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportation pour %s"
+msgstr "Tout exporter"
#: editor/project_export.cpp
msgid "Presets"
@@ -6885,9 +6883,8 @@ msgid "Add..."
msgstr "Ajouter…"
#: editor/project_export.cpp
-#, fuzzy
-msgid "Export Path:"
-msgstr "Pré-réglage d'exportation :"
+msgid "Export Path"
+msgstr "Chemin d'exportation"
#: editor/project_export.cpp
msgid "Resources"
@@ -6952,14 +6949,12 @@ msgid "Export PCK/Zip"
msgstr "Exporter le PCK/ZIP"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Mode d'exportation :"
+msgstr "Mode Exportation?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Exporter"
+msgstr "Tout exporter"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7263,7 +7258,7 @@ msgstr "Bouton gauche"
#: editor/project_settings_editor.cpp
msgid "Right Button"
-msgstr "Bouton droite"
+msgstr "Bouton droit"
#: editor/project_settings_editor.cpp
msgid "Middle Button"
@@ -7279,11 +7274,11 @@ msgstr "Molette vers le bas"
#: editor/project_settings_editor.cpp
msgid "Wheel Left Button"
-msgstr "Molette Bouton Gauche"
+msgstr "Molette bouton gauche"
#: editor/project_settings_editor.cpp
msgid "Wheel Right Button"
-msgstr "Molette Bouton droit"
+msgstr "Molette bouton droit"
#: editor/project_settings_editor.cpp
msgid "X Button 1"
@@ -7495,7 +7490,7 @@ msgstr "Localisation"
#: editor/project_settings_editor.cpp
msgid "Locales Filter"
-msgstr "Filtre de langues :"
+msgstr "Filtre de langues"
#: editor/project_settings_editor.cpp
msgid "Show all locales"
@@ -7596,7 +7591,7 @@ msgstr "Préfixe"
#: editor/rename_dialog.cpp
msgid "Suffix"
-msgstr "suffixe"
+msgstr "Suffixe"
#: editor/rename_dialog.cpp
msgid "Advanced options"
@@ -7651,7 +7646,6 @@ msgid "Step"
msgstr "Pas"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "Valeur par laquelle le compteur est incrémenté pour chaque nœud"
@@ -7660,7 +7654,6 @@ msgid "Padding"
msgstr "Remplissage"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7794,7 +7787,7 @@ msgstr "Supprimer le(s) nœud(s) ?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr "Ne peut fonctionner avec le noeud racine."
+msgstr "Ne peut fonctionner avec le nœud racine."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -7809,6 +7802,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Désactiver \"editable_instance\" implique la remise à zéro de toutes les "
+"propriétés du nœud."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7876,16 +7871,15 @@ msgstr "Erreur de duplication de la scène afin de l'enregistrer."
#: editor/scene_tree_dock.cpp
msgid "Sub-Resources"
-msgstr "Ressources secondaires :"
+msgstr "Ressources secondaires"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Effacer l'héritage"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Ouvrir la documentation Godot en ligne"
+msgstr "Ouvrir la documentation"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7900,9 +7894,8 @@ msgid "Change Type"
msgstr "Changer le type"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Ouvrir un script"
+msgstr "Hériter d'un script"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7918,7 +7911,7 @@ msgstr "Sauvegarder la branche comme scène"
#: editor/scene_tree_dock.cpp
msgid "Copy Node Path"
-msgstr "Copier le chemin du noeud"
+msgstr "Copier le chemin du nœud"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -7963,14 +7956,14 @@ msgstr "Rendre visible"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr "Avertissement de configuration de noeud :"
+msgstr "Avertissement de configuration de nœud :"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s).\n"
"Click to show signals dock."
msgstr ""
-"Le noeud possède une (des) connection(s) et un (des) groupe(s)\n"
+"Le nœud possède une (des) connection(s) et un (des) groupe(s)\n"
"Cliquez pour afficher l'onglet des signaux."
#: editor/scene_tree_editor.cpp
@@ -7978,7 +7971,7 @@ msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
-"Le noeud possède des connections.\n"
+"Le nœud possède des connections.\n"
"Cliquez pour montrer l'arrimage de signaux."
#: editor/scene_tree_editor.cpp
@@ -7986,7 +7979,7 @@ msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-"Le noeud fait partie d'un (de) groupe(s).\n"
+"Le nœud fait partie d'un (de) groupe(s).\n"
"Cliquez pour montrer l'arrimage de goupes."
#: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp
@@ -8035,7 +8028,7 @@ msgstr "Arbre de scène (nœuds) :"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr "Avertissement de configuration de noeud !"
+msgstr "Avertissement de configuration de nœud !"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -8066,9 +8059,8 @@ msgid "Path is empty"
msgstr "Le chemin est vide"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Le sprite est vide !"
+msgstr "Le nom de fichier est vide"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8132,7 +8124,7 @@ msgstr "Langage"
#: editor/script_create_dialog.cpp
msgid "Inherits"
-msgstr "Hérité de :"
+msgstr "Hérité de"
#: editor/script_create_dialog.cpp
msgid "Class Name"
@@ -8159,7 +8151,6 @@ msgid "Bytes:"
msgstr "Octets :"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
msgstr "Pile des appels"
@@ -8389,7 +8380,7 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr "L'argument du pas est zéro !"
#: modules/gdscript/gdscript_functions.cpp
@@ -8574,7 +8565,7 @@ msgstr "Impossible de sauvegarder la solution."
#: modules/mono/editor/godotsharp_editor.cpp
msgid "Done"
-msgstr "C'est fait !"
+msgstr "Terminé"
#: modules/mono/editor/godotsharp_editor.cpp
msgid "Failed to create C# project."
@@ -8614,7 +8605,7 @@ msgstr "Fin de la trace d'appel (stack trace) intrinsèque"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "Calculer le NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8776,11 +8767,11 @@ msgstr "Ajouter un nœud"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove VisualScript Nodes"
-msgstr "Supprimer noeuds VisualScript"
+msgstr "Supprimer nœuds VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Duplicate VisualScript Nodes"
-msgstr "Dupliquer noeuds VisualScript"
+msgstr "Dupliquer nœuds VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
@@ -8791,7 +8782,7 @@ msgstr ""
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
-"Maintenir Ctrl pour déposer un accesseur. Maintenir Maj pour déposer une "
+"Maintenir Contrôle pour déposer un accesseur. Maintenir Maj pour déposer une "
"signature générique."
#: modules/visual_script/visual_script_editor.cpp
@@ -8800,7 +8791,7 @@ msgstr "Maintenir %s pour déposer une référence simple au nœud."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr "Maintenir Ctrl pour déposer une référence simple au nœud."
+msgstr "Maintenir Contrôle pour déposer une référence simple au nœud."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Variable Setter."
@@ -8808,7 +8799,7 @@ msgstr "Maintenir %s pour déposer un mutateur de variable."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Variable Setter."
-msgstr "Maintenir Ctrl pour déposer un mutateur de variable."
+msgstr "Maintenir Contrôle pour déposer un mutateur de variable."
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Preload Node"
@@ -8860,7 +8851,7 @@ msgstr "Changer nom de l'entrée"
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't copy the function node."
-msgstr "Impossible de copier le noeud de fonction."
+msgstr "Impossible de copier le nœud de fonction."
#: modules/visual_script/visual_script_editor.cpp
msgid "Clipboard is empty!"
@@ -9002,12 +8993,11 @@ msgstr "Rechercher VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Obtenir %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Définir "
+msgstr "Définir %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9105,6 +9095,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"L'animation de CPUParticles2D a besoin d'un CanvasItemMaterial avec "
+"\"Animation de Particules\" activé."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9164,11 +9156,13 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"L'animation de Particles2D a besoin d'un CanvasItemMaterial avec \"Animation "
+"de Particules\" activé."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
-"Un PathFollow2D fonctionne seulement quand défini comme un enfant d'un nœud "
+"PathFollow2D fonctionne seulement quand défini comme un enfant d'un nœud "
"Path2D."
#: scene/2d/physics_body_2d.cpp
@@ -9214,11 +9208,11 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr "ARVRCamera doit avoir un noeud ARVROrigin comme parent"
+msgstr "ARVRCamera doit avoir un nœud ARVROrigin comme parent"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr "ARVRController doit avoir un noeud ARVROrigin comme parent"
+msgstr "ARVRController doit avoir un nœud ARVROrigin comme parent"
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -9230,7 +9224,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr "ARVRAnchor doit avoir un noeud ARVROrigin comme parent"
+msgstr "ARVRAnchor doit avoir un nœud ARVROrigin comme parent"
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -9310,17 +9304,16 @@ msgstr ""
"de forme pour cette CollisionShape !"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
-"Rien n'est visible car les maillages n'ont pas été assignés au tirage des "
-"passes."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Rien n'est visible car aucun maillage n'a été assigné."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"L'animation de CPUParticles a besoin d'un SpatialMaterial avec \"Billboard "
+"Particles\" activé."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9352,24 +9345,27 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"L'animation de Particles a besoin d'un SpatialMaterial avec \"Billboard "
+"Particles\" activé."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
msgstr ""
-"Un PathFollow2D fonctionne seulement quand défini comme un enfant d'un nœud "
-"Path2D."
+"PathFollow fonctionne seulement quand défini comme un enfant d'un nœud Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
-"Un PathFollow2D fonctionne seulement quand défini comme un enfant d'un nœud "
-"Path2D."
+"OrientedPathFollow fonctionne seulement quand défini comme un enfant d'un "
+"nœud Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow requiert l'activation de la propriété \"Up Vector\" de la "
+"ressource Curve de son Path parent."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9411,15 +9407,14 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Ce corps sera ignoré jusqu'à ce que vous définissiez un maillage"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Les changements de tailles des SoftBody seront suppléés par le moteur "
-"physique lors de l'exécution. Modifiez les tailles dans les formes de "
-"collision enfants à la place."
+"physique lors de l'exécution.\n"
+"Modifiez les tailles dans les formes de collision enfants à la place."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -9439,7 +9434,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr "Sur le noeud BlendTree '%s', animation introuvable : '%s'"
+msgstr "Sur le nœud BlendTree '%s', animation introuvable : '%s'"
#: scene/animation/animation_blend_tree.cpp
msgid "Animation not found: '%s'"
@@ -9447,7 +9442,7 @@ msgstr "Animation introuvable : '%s'"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
-msgstr "Dans le noeud '%s', animation non valide : '%s'."
+msgstr "Dans le nœud '%s', animation non valide : '%s'."
#: scene/animation/animation_tree.cpp
msgid "Invalid animation: '%s'."
@@ -9476,6 +9471,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "La racine AnimationPlayer n'est pas un nœud valide."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr "Ce nœud est désormais déprécié. Utilisez AnimationTree à la place."
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Mode brut"
@@ -9492,6 +9491,10 @@ msgstr "Alerte !"
msgid "Please Confirm..."
msgstr "Veuillez confirmer…"
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr "Activer l'aimantation et afficher la grille."
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9505,7 +9508,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Si exp_edit est vrai min_value doit être > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9561,10 +9564,6 @@ msgstr "Taille de police invalide."
msgid "Input"
msgstr "Entrée"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Aucun"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Source invalide pour la forme."
@@ -9580,1621 +9579,3 @@ msgstr "Affectation à l'uniforme."
#: servers/visual/shader_language.cpp
msgid "Varyings can only be assigned in vertex function."
msgstr "Les variations ne peuvent être affectées que dans la fonction vertex."
-
-#~ msgid "Are you sure you want to remove all connections from the \""
-#~ msgstr "Voulez-vous vraiment supprimer toutes les connexions du ''"
-
-#~ msgid "Class List:"
-#~ msgstr "Liste des classes :"
-
-#~ msgid "Search Classes"
-#~ msgstr "Chercher dans les classes"
-
-#~ msgid "Public Methods"
-#~ msgstr "Méthodes Publiques"
-
-#~ msgid "Public Methods:"
-#~ msgstr "Méthodes publiques :"
-
-#~ msgid "GUI Theme Items"
-#~ msgstr "Items de thème GUI"
-
-#~ msgid "GUI Theme Items:"
-#~ msgstr "Items de thème GUI :"
-
-#~ msgid "Property: "
-#~ msgstr "Propriété : "
-
-#~ msgid "Toggle folder status as Favorite."
-#~ msgstr "Basculer le statut du dossier sur Favori."
-
-#~ msgid "Show current scene file."
-#~ msgstr "Afficher le fichier de la scène courante."
-
-#~ msgid "Enter tree-view."
-#~ msgstr "Entrer dans la vue en arborescence."
-
-#~ msgid "Whole words"
-#~ msgstr "Mots entiers"
-
-#~ msgid "Match case"
-#~ msgstr "Cas de correspondance"
-
-#~ msgid "Filter: "
-#~ msgstr "Filtrer : "
-
-#~ msgid "Ok"
-#~ msgstr "OK"
-
-#~ msgid "Show In File System"
-#~ msgstr "Afficher dans le système de fichiers"
-
-#~ msgid "Search the class hierarchy."
-#~ msgstr "Cherche dans la hiérarchie des classes."
-
-#~ msgid "Search in files"
-#~ msgstr "Chercher dans les fichiers"
-
-#~ msgid ""
-#~ "Built-in scripts can only be edited when the scene they belong to is "
-#~ "loaded"
-#~ msgstr ""
-#~ "Les scripts intégrés ne peuvent être modifiés uniquement lorsque la scène "
-#~ "à qui ils appartiennent est ouverte"
-
-#~ msgid "Convert To Uppercase"
-#~ msgstr "Convertir en majuscule"
-
-#~ msgid "Convert To Lowercase"
-#~ msgstr "Convertir en minuscule"
-
-#~ msgid "Snap To Floor"
-#~ msgstr "Accrocher au sol"
-
-#~ msgid "Rotate 0 degrees"
-#~ msgstr "Tourner de 0 degrés"
-
-#~ msgid "Rotate 90 degrees"
-#~ msgstr "Tourner de 90 degrés"
-
-#~ msgid "Rotate 180 degrees"
-#~ msgstr "Tourner de 180 degrés"
-
-#~ msgid "Rotate 270 degrees"
-#~ msgstr "Tourner de 270 degrés"
-
-#~ msgid "Warning"
-#~ msgstr "Avertissement"
-
-#~ msgid "Error:"
-#~ msgstr "Erreur :"
-
-#~ msgid "Source:"
-#~ msgstr "Source :"
-
-#~ msgid "Function:"
-#~ msgstr "Fonction :"
-
-#~ msgid "Variable"
-#~ msgstr "Variable"
-
-#~ msgid "Errors:"
-#~ msgstr "Erreurs :"
-
-#~ msgid "Stack Trace (if applicable):"
-#~ msgstr "Trace de pile (si applicable) :"
-
-#~ msgid "Bake!"
-#~ msgstr "Calculer !"
-
-#~ msgid "Bake the navigation mesh."
-#~ msgstr "Précalculer le maillage de navigation."
-
-#~ msgid "Get"
-#~ msgstr "Récupérer"
-
-#~ msgid "Change Scalar Constant"
-#~ msgstr "Modifier une constante scalaire"
-
-#~ msgid "Change Vec Constant"
-#~ msgstr "Modifier une constance vectorielle"
-
-#~ msgid "Change RGB Constant"
-#~ msgstr "Modifier une constante RVB"
-
-#~ msgid "Change Scalar Operator"
-#~ msgstr "Modifier un opérateur scalaire"
-
-#~ msgid "Change Vec Operator"
-#~ msgstr "Modifier un opérateur vectoriel"
-
-#~ msgid "Change Vec Scalar Operator"
-#~ msgstr "Modifier un opérateur vectoriel scalaire"
-
-#~ msgid "Change RGB Operator"
-#~ msgstr "Modifier un opérateur RVB"
-
-#~ msgid "Toggle Rot Only"
-#~ msgstr "Basculer en mode rotation seule"
-
-#~ msgid "Change Scalar Function"
-#~ msgstr "Modifier une fonction scalaire"
-
-#~ msgid "Change Vec Function"
-#~ msgstr "Modifier une fonction vecteur"
-
-#~ msgid "Change Scalar Uniform"
-#~ msgstr "Modifier échelle"
-
-#~ msgid "Change Vec Uniform"
-#~ msgstr "Modifier vecteur"
-
-#~ msgid "Change RGB Uniform"
-#~ msgstr "Modifier RGB"
-
-#~ msgid "Change Default Value"
-#~ msgstr "Changer la valeur par défaut"
-
-#~ msgid "Change XForm Uniform"
-#~ msgstr "Modifier XForm"
-
-#~ msgid "Change Texture Uniform"
-#~ msgstr "Modifier texture"
-
-#~ msgid "Change Cubemap Uniform"
-#~ msgstr "Modifier Cubemap"
-
-#~ msgid "Change Comment"
-#~ msgstr "Modifier un commentaire"
-
-#~ msgid "Add/Remove to Color Ramp"
-#~ msgstr "Ajouter/supprimer de la rampe de couleurs"
-
-#~ msgid "Modify Color Ramp"
-#~ msgstr "Modifier une rampe de couleurs"
-
-#~ msgid "Add/Remove to Curve Map"
-#~ msgstr "Ajouter/supprimer de la carte de courbes"
-
-#~ msgid "Modify Curve Map"
-#~ msgstr "Modifier la carte de courbes"
-
-#~ msgid "Change Input Name"
-#~ msgstr "Changer le nom de l'entrée"
-
-#~ msgid "Connect Graph Nodes"
-#~ msgstr "Connecter les nœuds de graphe"
-
-#~ msgid "Disconnect Graph Nodes"
-#~ msgstr "Déconnecter les nœuds de graphe"
-
-#~ msgid "Remove Shader Graph Node"
-#~ msgstr "Supprimer le nœud de graphe Shader"
-
-#~ msgid "Move Shader Graph Node"
-#~ msgstr "Déplacer le nœud de graphe Shader"
-
-#~ msgid "Duplicate Graph Node(s)"
-#~ msgstr "Dupliquer le(s) nœud(s) de graphe"
-
-#~ msgid "Delete Shader Graph Node(s)"
-#~ msgstr "Effacer le(s) nœud(s) de graphe Shader"
-
-#~ msgid "Error: Cyclic Connection Link"
-#~ msgstr "Erreur: lien de connexion cyclique"
-
-#~ msgid "Error: Missing Input Connections"
-#~ msgstr "Erreur : connexions d'entrée manquantes"
-
-#~ msgid "Add Shader Graph Node"
-#~ msgstr "Ajouter un nœud de graphe Shader"
-
-#~ msgid "Disabled"
-#~ msgstr "Désactivé"
-
-#~ msgid "Move Anim Track Up"
-#~ msgstr "Monter la piste d'animation"
-
-#~ msgid "Move Anim Track Down"
-#~ msgstr "Descendre la piste d'animation"
-
-#~ msgid "Set Transitions to:"
-#~ msgstr "Définir les transitions à :"
-
-#~ msgid "Anim Track Rename"
-#~ msgstr "Renommer la piste d'animation"
-
-#~ msgid "Anim Track Change Interpolation"
-#~ msgstr "Modifier l'interpolation de la piste d'animation"
-
-#~ msgid "Anim Track Change Value Mode"
-#~ msgstr "Modifier le mode de valeur de la piste d'animation"
-
-#~ msgid "Anim Track Change Wrap Mode"
-#~ msgstr "Piste d'Animation Changer Mode de Conclusion"
-
-#~ msgid "Edit Node Curve"
-#~ msgstr "Modifier la courbe du nœud"
-
-#~ msgid "Edit Selection Curve"
-#~ msgstr "Modifier la courbe de sélection"
-
-#~ msgid "Anim Add Key"
-#~ msgstr "Anim Ajouter Clé"
-
-#~ msgid "In"
-#~ msgstr "In"
-
-#~ msgid "Out"
-#~ msgstr "Out"
-
-#~ msgid "In-Out"
-#~ msgstr "In-out"
-
-#~ msgid "Out-In"
-#~ msgstr "Out-in"
-
-#~ msgid "Transitions"
-#~ msgstr "Transitions"
-
-#~ msgid "Change Anim Len"
-#~ msgstr "Changer durée d'animation"
-
-#~ msgid "Change Anim Loop"
-#~ msgstr "Modifier le bouclage de l'animation"
-
-#~ msgid "Anim Create Typed Value Key"
-#~ msgstr "Animation Créer une clé pour une valeur typée"
-
-#~ msgid "Anim Add Call Track"
-#~ msgstr "Anim Ajouter Piste d'Appel"
-
-#~ msgid "Length (s):"
-#~ msgstr "Longueur (s) :"
-
-#~ msgid "Step (s):"
-#~ msgstr "Pas (s) :"
-
-#~ msgid "Cursor step snap (in seconds)."
-#~ msgstr "Pas du curseur (en secondes)."
-
-#~ msgid "Enable/Disable looping in animation."
-#~ msgstr "Activer/Désactiver le bouclage de l'animation."
-
-#~ msgid "Add new tracks."
-#~ msgstr "Ajouter de nouvelles pistes."
-
-#~ msgid "Move current track up."
-#~ msgstr "Déplacer la piste actuelle vers le haut."
-
-#~ msgid "Move current track down."
-#~ msgstr "Déplacer la piste actuelle vers le bas."
-
-#~ msgid "Track tools"
-#~ msgstr "Outils de piste"
-
-#~ msgid "Enable editing of individual keys by clicking them."
-#~ msgstr "Activer la modification de chaque clé en cliquant dessus."
-
-#~ msgid "Key"
-#~ msgstr "Clé"
-
-#~ msgid "Call Functions in Which Node?"
-#~ msgstr "Appeler des fonctions dans quel nœud ?"
-
-#~ msgid "Thanks!"
-#~ msgstr "Merci !"
-
-#~ msgid "I see..."
-#~ msgstr "Je vois…"
-
-#~ msgid "Can't open '%s'."
-#~ msgstr "Impossible d'ouvrir '%s'."
-
-#~ msgid "Ugh"
-#~ msgstr "Oups"
-
-#~ msgid "Run Script"
-#~ msgstr "Lancer le script"
-
-#~ msgid "Save the currently edited resource."
-#~ msgstr "Enregistrer la ressource actuellement modifiée."
-
-#~ msgid "Stop Profiling"
-#~ msgstr "Arrêter le profilage"
-
-#~ msgid "Start Profiling"
-#~ msgstr "Démarrer le profilage"
-
-#~ msgid "Default (Same as Editor)"
-#~ msgstr "Par défaut (le même que l'éditeur)"
-
-#~ msgid "Create new animation in player."
-#~ msgstr "Créer une nouvelle animation dans le lecteur."
-
-#~ msgid "Load animation from disk."
-#~ msgstr "Charger une animation depuis le disque."
-
-#~ msgid "Load an animation from disk."
-#~ msgstr "Charger une animation depuis le disque."
-
-#~ msgid "Save the current animation"
-#~ msgstr "Enregistrer l'animation actuelle"
-
-#~ msgid "Edit Target Blend Times"
-#~ msgstr "Modifier les temps de mélange de la cible"
-
-#~ msgid "Copy Animation"
-#~ msgstr "Copier l'animation"
-
-#~ msgid "Fetching:"
-#~ msgstr "Récupération:"
-
-#~ msgid "prev"
-#~ msgstr "préc"
-
-#~ msgid "next"
-#~ msgstr "suiv"
-
-#~ msgid "last"
-#~ msgstr "dern"
-
-#~ msgid "Edit IK Chain"
-#~ msgstr "Modifier la chaîne IK"
-
-#~ msgid "Drag pivot from mouse position"
-#~ msgstr "Déplacer le point de pivot à la position de la souris"
-
-#~ msgid "Set pivot at mouse position"
-#~ msgstr "Placer le pivot sur la position de la souris"
-
-#~ msgid "Add/Remove Color Ramp Point"
-#~ msgstr "Ajouter/supprimer un point de rampe de couleur"
-
-#~ msgid "OK :("
-#~ msgstr "OK :("
-
-#~ msgid "Skeleton Gizmo visibility"
-#~ msgstr "Visibilité squelette Gizmo"
-
-#~ msgid "StyleBox Preview:"
-#~ msgstr "Aperçu de la StyleBox :"
-
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Séparation :"
-
-#~ msgid "Texture Region Editor"
-#~ msgstr "Éditeur de région de texture"
-
-#~ msgid "Erase selection"
-#~ msgstr "Supprimer la sélection"
-
-#~ msgid "Could not find tile:"
-#~ msgstr "Impossible de trouver la tuile :"
-
-#~ msgid "Item name or ID:"
-#~ msgstr "Nom d'item ou ID :"
-
-#~ msgid "Autotiles"
-#~ msgstr "Autotiles"
-
-#~ msgid "Export templates for this platform are missing/corrupted: "
-#~ msgstr ""
-#~ "Modèles d'exportation manquants ou corrompus pour cette plateforme : "
-
-#~ msgid "Button 7"
-#~ msgstr "Bouton 7"
-
-#~ msgid "Button 8"
-#~ msgstr "Bouton 8"
-
-#~ msgid "Button 9"
-#~ msgstr "Bouton 9"
-
-#~ msgid "Discard Instancing"
-#~ msgstr "Abandonner l'instanciation"
-
-#~ msgid "Makes Sense!"
-#~ msgstr "C'est sensé !"
-
-#~ msgid "Clear!"
-#~ msgstr "Effacer !"
-
-#~ msgid "Toggle Spatial Visible"
-#~ msgstr "Afficher/cacher le Spatial"
-
-#~ msgid "Toggle CanvasItem Visible"
-#~ msgstr "Afficher/cacher le CanvasItem"
-
-#~ msgid "Condition"
-#~ msgstr "Condition"
-
-#~ msgid "Sequence"
-#~ msgstr "Séquence"
-
-#~ msgid "Switch"
-#~ msgstr "Switch"
-
-#~ msgid "Iterator"
-#~ msgstr "Itérateur"
-
-#~ msgid "While"
-#~ msgstr "Tant que"
-
-#~ msgid "Return"
-#~ msgstr "Retour"
-
-#~ msgid "Call"
-#~ msgstr "Appel"
-
-#~ msgid "Edit Variable"
-#~ msgstr "Editerr la variable :"
-
-#~ msgid "Edit Signal"
-#~ msgstr "Editer signal :"
-
-#~ msgid "Invalid action (anything goes but '/' or ':')."
-#~ msgstr "Action invalide (tout passe, sauf « / » ou « : »)."
-
-#~ msgid "Can't contain '/' or ':'"
-#~ msgstr "Ne peut pas contenir de '/' ou ':'"
-
-#~ msgid ""
-#~ "Invalid version.txt format inside templates. Revision is not a valid "
-#~ "identifier."
-#~ msgstr ""
-#~ "Format de version.txt invalide dans les modèles. Revision n'est pas un "
-#~ "identifiant valide."
-
-#~ msgid "Can't write file."
-#~ msgstr "Impossible d'écrire le fichier."
-
-#~ msgid "Couldn't get project.godot in project path."
-#~ msgstr ""
-#~ "Impossible de trouver le fichier project.godot dans le chemin du projet."
-
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr ""
-#~ "Impossible de trouver le fichier project.godot dans le chemin du projet."
-
-#~ msgid "Not found!"
-#~ msgstr "Non trouvé !"
-
-#~ msgid "Replace By"
-#~ msgstr "Remplacer par"
-
-#~ msgid "Case Sensitive"
-#~ msgstr "Sensible à la casse"
-
-#~ msgid "Backwards"
-#~ msgstr "À l'envers"
-
-#~ msgid "Prompt On Replace"
-#~ msgstr "Avertir lors du remplacement"
-
-#~ msgid "Skip"
-#~ msgstr "Passer"
-
-#~ msgid ""
-#~ "Your project will be created in a non empty folder (you might want to "
-#~ "create a new folder)."
-#~ msgstr ""
-#~ "Votre projet sera créé dans un dossier non-vide (vous pourriez avoir "
-#~ "besoin de créer un nouveau dossier)."
-
-#~ msgid "That's a BINGO!"
-#~ msgstr "C'est un BINGO !"
-
-#~ msgid "preview"
-#~ msgstr "Aperçu"
-
-#~ msgid "Move Add Key"
-#~ msgstr "Mouvement Ajouter une clé"
-
-#~ msgid "Create Subscription"
-#~ msgstr "Créer une connexion"
-
-#~ msgid "List:"
-#~ msgstr "Liste :"
-
-#~ msgid "Set Emission Mask"
-#~ msgstr "Définir le masque d'émission"
-
-#~ msgid "Clear Emitter"
-#~ msgstr "Effacer l'Émetteur"
-
-#~ msgid "Fold Line"
-#~ msgstr "Masquer la ligne"
-
-#~ msgid " "
-#~ msgstr " "
-
-#~ msgid "Sections:"
-#~ msgstr "Sections :"
-
-#~ msgid "Cannot navigate to '"
-#~ msgstr "Ne peux pas acceder à '"
-
-#~ msgid ""
-#~ "\n"
-#~ "Source: "
-#~ msgstr ""
-#~ "\n"
-#~ "Source : "
-
-#~ msgid "Remove Point from Line2D"
-#~ msgstr "Supprimer point de Line2D"
-
-#~ msgid "Add Point to Line2D"
-#~ msgstr "Ajouter point à Line2D"
-
-#~ msgid "Move Point in Line2D"
-#~ msgstr "Déplacer point de Line2D"
-
-#~ msgid "Split Segment (in line)"
-#~ msgstr "Diviser le segment (dans la ligne)"
-
-#~ msgid "Meta+"
-#~ msgstr "Méta+"
-
-#~ msgid "Setting '"
-#~ msgstr "Paramètre"
-
-#~ msgid "Remote Inspector"
-#~ msgstr "Inspecteur distant"
-
-#~ msgid "Live Scene Tree:"
-#~ msgstr "Arbre des scènes en direct :"
-
-#~ msgid "Remote Object Properties: "
-#~ msgstr "Propriétés de l'objet distant : "
-
-#, fuzzy
-#~ msgid "Prev Level (%sDown Wheel)"
-#~ msgstr "Niveau de prévisualisation ("
-
-#, fuzzy
-#~ msgid "Next Level (%sUp Wheel)"
-#~ msgstr "Niveau suivant ("
-
-#~ msgid "Selection -> Duplicate"
-#~ msgstr "Sélection -> Dupliquer"
-
-#~ msgid "Selection -> Clear"
-#~ msgstr "Sélection -> Effacer"
-
-#~ msgid ""
-#~ "Path property must point to a valid Viewport node to work. Such Viewport "
-#~ "must be set to 'render target' mode."
-#~ msgstr ""
-#~ "La propriété Path doit pointer vers un nœud de type Viewport valide pour "
-#~ "fonctionner. Ce Viewport doit utiliser le mode « render target »."
-
-#~ msgid ""
-#~ "The Viewport set in the path property must be set as 'render target' in "
-#~ "order for this sprite to work."
-#~ msgstr ""
-#~ "Le Viewport défini dans la propriété Path doit utiliser le mode « render "
-#~ "target » pour que cette sprite fonctionne."
-
-#~ msgid "' parsing of config failed."
-#~ msgstr "L'analyse de la configuration a échoué."
-
-#~ msgid "Method List For '%s':"
-#~ msgstr "Liste des méthodes pour « %s » :"
-
-#~ msgid "Arguments:"
-#~ msgstr "Paramètres :"
-
-#~ msgid "Return:"
-#~ msgstr "Retourne :"
-
-#~ msgid "Added:"
-#~ msgstr "Ajouté :"
-
-#~ msgid "Removed:"
-#~ msgstr "Supprimé :"
-
-#~ msgid "Could not save atlas subtexture:"
-#~ msgstr "Impossible d'enregistrer la sous-texture atlas :"
-
-#~ msgid "Setting Up..."
-#~ msgstr "Configuration…"
-
-#~ msgid "Error loading scene."
-#~ msgstr "Erreur lors du chargement de la scène."
-
-#~ msgid "Re-Import"
-#~ msgstr "Ré-importer"
-
-#~ msgid "Please wait for scan to complete."
-#~ msgstr "Veuillez attendre la fin du scan."
-
-#~ msgid "Current scene must be saved to re-import."
-#~ msgstr ""
-#~ "La scène actuelle doit être enregistrée afin de pouvoir ré-importer."
-
-#~ msgid "Re-Importing"
-#~ msgstr "Ré-importation"
-
-#~ msgid "Re-Import Changed Resources"
-#~ msgstr "Ré-importer les ressources modifiées"
-
-#~ msgid "Loading Export Templates"
-#~ msgstr "Chargement des modèles d'exportation"
-
-#~ msgid ""
-#~ "\n"
-#~ "Status: Needs Re-Import"
-#~ msgstr ""
-#~ "\n"
-#~ "Statut: Réimportation nécessaire"
-
-#~ msgid "Same source and destination files, doing nothing."
-#~ msgstr "Fichiers source et destination identiques, rien à faire."
-
-#~ msgid "Target file exists, can't overwrite. Delete first."
-#~ msgstr ""
-#~ "Le fichier cible existe et ne peut être réécrit. Supprimez le d'abord."
-
-#~ msgid "Same source and destination paths, doing nothing."
-#~ msgstr "Chemins source et destination identiques, rien à faire."
-
-#~ msgid "Can't move directories to within themselves."
-#~ msgstr "Impossible de déplacer des répertoires vers eux-mêmes."
-
-#~ msgid "Can't rename deps for:\n"
-#~ msgstr "Impossible de renommer dependances pour :\n"
-
-#~ msgid "Pick New Name and Location For:"
-#~ msgstr "Entrez un nouveau nom et chemin pour :"
-
-#~ msgid "No files selected!"
-#~ msgstr "Pas de fichiers sélectionnés !"
-
-#~ msgid "Info"
-#~ msgstr "Information"
-
-#~ msgid "Re-Import..."
-#~ msgstr "Ré-importer…"
-
-#~ msgid "No bit masks to import!"
-#~ msgstr "Pas de masques de bits à importer !"
-
-#~ msgid "Target path is empty."
-#~ msgstr "Le chemin de destination est vide."
-
-#~ msgid "Target path must be a complete resource path."
-#~ msgstr ""
-#~ "Le chemin de destination doit être un chemin complet vers une ressource."
-
-#~ msgid "Target path must exist."
-#~ msgstr "Le chemin de destination doit exister."
-
-#~ msgid "Import BitMasks"
-#~ msgstr "Importer des BitMasks"
-
-#~ msgid "Source Texture(s):"
-#~ msgstr "Texture(s) source :"
-
-#~ msgid "Target Path:"
-#~ msgstr "Chemin de destination :"
-
-#~ msgid "Accept"
-#~ msgstr "Accepter"
-
-#~ msgid "Bit Mask"
-#~ msgstr "Masque de bits"
-
-#~ msgid "No source font file!"
-#~ msgstr "Pas de fichier de police source !"
-
-#~ msgid "No target font resource!"
-#~ msgstr "Pas de ressource de police de destination !"
-
-#~ msgid ""
-#~ "Invalid file extension.\n"
-#~ "Please use .font."
-#~ msgstr ""
-#~ "Extension de fichier invalide.\n"
-#~ "Veuillez utiliser .font."
-
-#~ msgid "Couldn't save font."
-#~ msgstr "Impossible d'enregistrer la police."
-
-#~ msgid "Source Font:"
-#~ msgstr "Police source :"
-
-#~ msgid "Source Font Size:"
-#~ msgstr "Taille de la police source :"
-
-#~ msgid "Dest Resource:"
-#~ msgstr "Ressource de destination :"
-
-#~ msgid "The quick brown fox jumps over the lazy dog."
-#~ msgstr "Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis."
-
-#~ msgid "Test:"
-#~ msgstr "Test :"
-
-#~ msgid "Options:"
-#~ msgstr "Options :"
-
-#~ msgid "Font Import"
-#~ msgstr "Importation d'une police"
-
-#~ msgid ""
-#~ "This file is already a Godot font file, please supply a BMFont type file "
-#~ "instead."
-#~ msgstr ""
-#~ "Ce fichier est déjà un fichier de police Godot, veuillez fournir un "
-#~ "fichier de type BMFont à la place."
-
-#~ msgid "Failed opening as BMFont file."
-#~ msgstr "Impossible d'ouvrir le fichier en tant que fichier BMFont."
-
-#~ msgid "Invalid font custom source."
-#~ msgstr "Source personnalisée de police invalide."
-
-#~ msgid "No meshes to import!"
-#~ msgstr "Pas de maillages à importer !"
-
-#~ msgid "Single Mesh Import"
-#~ msgstr "Importer un maillage"
-
-#~ msgid "Source Mesh(es):"
-#~ msgstr "Maillage(s) source :"
-
-#~ msgid "Surface %d"
-#~ msgstr "Surface %d"
-
-#~ msgid "No samples to import!"
-#~ msgstr "Pas d'échantillons à importer !"
-
-#~ msgid "Import Audio Samples"
-#~ msgstr "Importer des échantillons audio"
-
-#~ msgid "Source Sample(s):"
-#~ msgstr "Échantillon(s) source :"
-
-#~ msgid "Audio Sample"
-#~ msgstr "Échantillon audio"
-
-#~ msgid "New Clip"
-#~ msgstr "Nouvelle séquence"
-
-#~ msgid "Flags"
-#~ msgstr "Drapeaux"
-
-#~ msgid "Bake FPS:"
-#~ msgstr "FPS de calcul :"
-
-#~ msgid "Optimizer"
-#~ msgstr "Optimiseur"
-
-#~ msgid "Max Linear Error"
-#~ msgstr "Erreur linéaire maximale"
-
-#~ msgid "Max Angular Error"
-#~ msgstr "Erreur angulaire maximale"
-
-#~ msgid "Max Angle"
-#~ msgstr "Angle maximal"
-
-#~ msgid "Start(s)"
-#~ msgstr "Départ(s)"
-
-#~ msgid "Source path is empty."
-#~ msgstr "Le chemin source est vide."
-
-#~ msgid "Couldn't load post-import script."
-#~ msgstr "Impossible de charger le script de post-importation."
-
-#~ msgid "Invalid/broken script for post-import."
-#~ msgstr "Script invalide ou cassé de post-importation."
-
-#~ msgid "Error importing scene."
-#~ msgstr "Erreur à l'importation de la scène."
-
-#~ msgid "Import 3D Scene"
-#~ msgstr "Importer une scène 3D"
-
-#~ msgid "Source Scene:"
-#~ msgstr "Scène source :"
-
-#~ msgid "Same as Target Scene"
-#~ msgstr "Identique à la scène de destination"
-
-#~ msgid "Shared"
-#~ msgstr "Partagé"
-
-#~ msgid "Target Texture Folder:"
-#~ msgstr "Dossier de destination des textures :"
-
-#~ msgid "Custom Root Node Type:"
-#~ msgstr "Type de nœud racine personnalisé :"
-
-#~ msgid "Auto"
-#~ msgstr "Auto."
-
-#~ msgid "The Following Files are Missing:"
-#~ msgstr "Les fichiers suivants sont manquants :"
-
-#~ msgid "Import Anyway"
-#~ msgstr "Importer quand même"
-
-#~ msgid "Edited scene has not been saved, open imported scene anyway?"
-#~ msgstr ""
-#~ "La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène "
-#~ "importée quand même ?"
-
-#~ msgid "Import Image:"
-#~ msgstr "Importer une image :"
-
-#~ msgid "Couldn't localize path: %s (already local)"
-#~ msgstr "Impossible de rendre le chemin local : %s (déjà local)"
-
-#~ msgid "3D Scene Animation"
-#~ msgstr "Animation de scène 3D"
-
-#~ msgid "Uncompressed"
-#~ msgstr "Non compressé"
-
-#~ msgid "Compress Lossless (PNG)"
-#~ msgstr "Compression sans perte (PNG)"
-
-#~ msgid "Compress Lossy (WebP)"
-#~ msgstr "Compression avec perte (WebP)"
-
-#~ msgid "Compress (VRAM)"
-#~ msgstr "Compression GPU (VRAM)"
-
-#~ msgid "Texture Format"
-#~ msgstr "Format de texture"
-
-#~ msgid "Texture Compression Quality (WebP):"
-#~ msgstr "Qualité de compression de la texture (WebP) :"
-
-#~ msgid "Texture Options"
-#~ msgstr "Options de texture"
-
-#~ msgid "Please specify some files!"
-#~ msgstr "Veuillez spécifier des fichiers !"
-
-#~ msgid "At least one file needed for Atlas."
-#~ msgstr "Il faut au moins un fichier pour créer un atlas."
-
-#~ msgid "Error importing:"
-#~ msgstr "Erreur d'importation :"
-
-#~ msgid "Only one file is required for large texture."
-#~ msgstr "Un seul fichier est nécessaire pour créer une grande texture."
-
-#~ msgid "Max Texture Size:"
-#~ msgstr "Taille de texture maximale :"
-
-#~ msgid "Import Textures for Atlas (2D)"
-#~ msgstr "Importer des textures pour un atlas (2D)"
-
-#~ msgid "Large Texture"
-#~ msgstr "Grande texture"
-
-#~ msgid "Import Large Textures (2D)"
-#~ msgstr "Importer des grandes textures (2D)"
-
-#~ msgid "Source Texture"
-#~ msgstr "Texture source"
-
-#~ msgid "Base Atlas Texture"
-#~ msgstr "Texture d'atlas de base"
-
-#~ msgid "Source Texture(s)"
-#~ msgstr "Texture(s) source"
-
-#~ msgid "Import Textures for 2D"
-#~ msgstr "Importer des textures pour la 2D"
-
-#~ msgid "Import Textures for 3D"
-#~ msgstr "Importer des textures pour la 3D"
-
-#~ msgid "Import Textures"
-#~ msgstr "Importer des textures"
-
-#~ msgid "2D Texture"
-#~ msgstr "Texture 2D"
-
-#~ msgid "3D Texture"
-#~ msgstr "Texture 3D"
-
-#~ msgid "Atlas Texture"
-#~ msgstr "Texture atlas"
-
-#~ msgid ""
-#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
-#~ "to the project."
-#~ msgstr ""
-#~ "REMARQUE : L'import de textures 2D n'est pas obligatoire. Copiez "
-#~ "directement les fichiers PNG ou JPEG dans le projet."
-
-#~ msgid "Crop empty space."
-#~ msgstr "Rogner l'espace vide."
-
-#~ msgid "Texture"
-#~ msgstr "Texture"
-
-#~ msgid "Import Large Texture"
-#~ msgstr "Importer une grande texture"
-
-#~ msgid "Load Source Image"
-#~ msgstr "Charger une image source"
-
-#~ msgid "Slicing"
-#~ msgstr "Découpage"
-
-#~ msgid "Saving"
-#~ msgstr "Enregistrement"
-
-#~ msgid "Couldn't save large texture:"
-#~ msgstr "Impossible d'enregistrer la grande texture :"
-
-#~ msgid "Build Atlas For:"
-#~ msgstr "Construire l'atlas pour :"
-
-#~ msgid "Loading Image:"
-#~ msgstr "Chargement de l'image :"
-
-#~ msgid "Couldn't load image:"
-#~ msgstr "Impossible de charger l'image :"
-
-#~ msgid "Converting Images"
-#~ msgstr "Conversion des images"
-
-#~ msgid "Cropping Images"
-#~ msgstr "Rognage des images"
-
-#~ msgid "Couldn't save atlas image:"
-#~ msgstr "Impossible d'enregistrer l'image d'atlas :"
-
-#~ msgid "Couldn't save converted texture:"
-#~ msgstr "Impossible d'enregistrer la texture convertie :"
-
-#~ msgid "Invalid translation source!"
-#~ msgstr "Source de traduction invalide !"
-
-#~ msgid "Column"
-#~ msgstr "Colonne"
-
-#~ msgid "No items to import!"
-#~ msgstr "Pas d'objets à importer !"
-
-#~ msgid "No target path!"
-#~ msgstr "Pas de chemin de destination !"
-
-#~ msgid "Import Translations"
-#~ msgstr "Importer des traductions"
-
-#~ msgid "Couldn't import!"
-#~ msgstr "Impossible d'importer !"
-
-#~ msgid "Import Translation"
-#~ msgstr "Importer une traduction"
-
-#~ msgid "Source CSV:"
-#~ msgstr "CSV source :"
-
-#~ msgid "Ignore First Row"
-#~ msgstr "Ignorer la première ligne"
-
-#~ msgid "Compress"
-#~ msgstr "Compresser"
-
-#~ msgid "Add to Project (project.godot)"
-#~ msgstr "Ajouter au projet (project.godot)"
-
-#~ msgid "Import Languages:"
-#~ msgstr "Importer les langues :"
-
-#~ msgid "Translation"
-#~ msgstr "Traduction"
-
-#~ msgid "Triangle #"
-#~ msgstr "Triangle #"
-
-#~ msgid "Light Baker Setup:"
-#~ msgstr "Paramètres du calculateur d'éclairage :"
-
-#~ msgid "Fixing Lights"
-#~ msgstr "Correction des lumières"
-
-#~ msgid "Making BVH"
-#~ msgstr "Création du BVH"
-
-#~ msgid "Allocating Texture #"
-#~ msgstr "Allocation de la texture #"
-
-#~ msgid "Baking Triangle #"
-#~ msgstr "Calcul de la texture #"
-
-#~ msgid "Post-Processing Texture #"
-#~ msgstr "Post-traitement de la texture #"
-
-#~ msgid "Reset the lightmap octree baking process (start over)."
-#~ msgstr ""
-#~ "Remettre le processus de calcul de l'éclairage à zéro (recommencer)."
-
-#~ msgid "Zoom Set..."
-#~ msgstr "Définir le zoom…"
-
-#~ msgid "Set a Value"
-#~ msgstr "Définir une valeur"
-
-#~ msgid "Parse BBCode"
-#~ msgstr "Analyser le BBCode"
-
-#~ msgid "Length:"
-#~ msgstr "Longueur :"
-
-#~ msgid "Open Sample File(s)"
-#~ msgstr "Ouvrir un ou des fichiers d'échantillons"
-
-#~ msgid "ERROR: Couldn't load sample!"
-#~ msgstr "ERREUR : Impossible de charger l'échantillon !"
-
-#~ msgid "Add Sample"
-#~ msgstr "Ajouter un échantillon"
-
-#~ msgid "Rename Sample"
-#~ msgstr "Renommer l'échantillon"
-
-#~ msgid "Delete Sample"
-#~ msgstr "Supprimer l'échantillon"
-
-#~ msgid "16 Bits"
-#~ msgstr "16 bits"
-
-#~ msgid "8 Bits"
-#~ msgstr "8 bits"
-
-#~ msgid "Stereo"
-#~ msgstr "Stéréo"
-
-#~ msgid "Window"
-#~ msgstr "Fenêtre"
-
-#~ msgid "Scaling to %s%%."
-#~ msgstr "Mise à l'échelle %s%%."
-
-#~ msgid "Up"
-#~ msgstr "Haut"
-
-#~ msgid "Down"
-#~ msgstr "Bas"
-
-#~ msgid "Bucket"
-#~ msgstr "Seau"
-
-#~ msgid "Invalid project path, the path must exist!"
-#~ msgstr "Chemin de projet invalide, le chemin doit exister !"
-
-#~ msgid "Invalid project path, project.godot must not exist."
-#~ msgstr "Chemin de projet invalide, project.godot ne doit pas exister."
-
-#~ msgid "Invalid project path, project.godot must exist."
-#~ msgstr "Chemin de projet invalide, project.godot doit exister."
-
-#~ msgid "Project Path (Must Exist):"
-#~ msgstr "Chemin du projet (doit exister) :"
-
-#~ msgid "Create New Resource"
-#~ msgstr "Créer une nouvelle ressource"
-
-#~ msgid "Open Resource"
-#~ msgstr "Ouvrir la ressource"
-
-#~ msgid "Save Resource"
-#~ msgstr "Enregistrer la ressource"
-
-#~ msgid "Resource Tools"
-#~ msgstr "Outils des ressources"
-
-#~ msgid "Edit Groups"
-#~ msgstr "Modifier les groupes"
-
-#~ msgid "GridMap Paint"
-#~ msgstr "Peinture de GridMap"
-
-#~ msgid "Tiles"
-#~ msgstr "Tuiles"
-
-#~ msgid "Areas"
-#~ msgstr "Aires"
-
-#~ msgid "Ctrl+"
-#~ msgstr "Ctrl+"
-
-#~ msgid "Down Wheel)"
-#~ msgstr "Roue descendante)"
-
-#~ msgid "Up Wheel)"
-#~ msgstr "Roue ascendante)"
-
-#~ msgid "Close scene? (Unsaved changes will be lost)"
-#~ msgstr ""
-#~ "Fermer la scène ? (les modifications non sauvegardées seront perdues)"
-
-#~ msgid ""
-#~ "Open Project Manager? \n"
-#~ "(Unsaved changes will be lost)"
-#~ msgstr ""
-#~ "Ouvrir le gestionnaire de projets ?\n"
-#~ "(les modifications non sauvegardées seront perdues)"
-
-#~ msgid "Close Goto Prev. Scene"
-#~ msgstr "Fermer, aller à la scène précédente"
-
-#~ msgid "Del"
-#~ msgstr "Supprimer"
-
-#~ msgid "just pressed"
-#~ msgstr "vient d'être appuyé"
-
-#, fuzzy
-#~ msgid ""
-#~ "Couldn't read the certificate file. Are the path and password both "
-#~ "correct?"
-#~ msgstr ""
-#~ "Le fichier certificat n'a pas pu être lu. Le chemin et le mot de passe "
-#~ "sont-ils tous deux corrects ?"
-
-#~ msgid "Error creating the signature object."
-#~ msgstr "Erreur en créant la signature de l'objet."
-
-#~ msgid "Error creating the package signature."
-#~ msgstr "Erreur en créant la signature du paquet."
-
-#~ msgid ""
-#~ "No export templates found.\n"
-#~ "Download and install export templates."
-#~ msgstr ""
-#~ "Aucun modèle d'export n'a été trouvé.\n"
-#~ "Téléchargez et installez des modèles d'export."
-
-#~ msgid "Custom debug package not found."
-#~ msgstr "Le paquet personnalisé de débogage n'a pas été trouvé."
-
-#~ msgid "Custom release package not found."
-#~ msgstr "Le paquet personnalisé de parution n'a pas été trouvé."
-
-#~ msgid "Invalid unique name."
-#~ msgstr "Nom unique invalide."
-
-#~ msgid "Invalid product GUID."
-#~ msgstr "GUID de produit invalide."
-
-#~ msgid "Invalid publisher GUID."
-#~ msgstr "GUID d'éditeur invalide."
-
-#~ msgid "Invalid background color."
-#~ msgstr "Couleur d'arrière-plan invalide."
-
-#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
-#~ msgstr "Dimensions de l'image incorrectes (devraient être 50x50)."
-
-#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-#~ msgstr ""
-#~ "Dimensions d'image de logo carré 44x44 invalides (devraient être 44x44)."
-
-#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-#~ msgstr ""
-#~ "Dimensions d'image de logo carré 71x71 invalides (devraient être 71x71)."
-
-#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-#~ msgstr ""
-#~ "Dimensions d'image de logo carré 150x150 invalides (devraient être "
-#~ "150x150)."
-
-#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-#~ msgstr ""
-#~ "Dimensions d'image de logo carré 310x310 invalides (devraient être "
-#~ "310x310)."
-
-#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-#~ msgstr ""
-#~ "Dimensions d'image de logo large 310x150 invalides (devraient être "
-#~ "310x150)."
-
-#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
-#~ msgstr ""
-#~ "Dimensions d'image d'écran de démarrage invalides (devraient être "
-#~ "620x300)."
-
-#, fuzzy
-#~ msgid "RAW Mode"
-#~ msgstr "Mode d'exécution :"
-
-#~ msgid "Node From Scene"
-#~ msgstr "Nœud à partir d'une scène"
-
-#~ msgid "Import assets to the project."
-#~ msgstr "Importer des ressources dans le projet."
-
-#~ msgid "Export the project to many platforms."
-#~ msgstr "Exporter le projet vers diverses plate-formes."
-
-#~ msgid "Alerts when an external resource has changed."
-#~ msgstr "Alerte lorsqu'une ressource externe a été modifiée."
-
-#~ msgid "Open https://godotengine.org at tutorials section."
-#~ msgstr "Ouvre https://godotengine.org dans la section des tutoriels."
-
-#~ msgid "No scene selected to instance!"
-#~ msgstr "Pas de scène sélectionnée à instancier !"
-
-#~ msgid "Instance at Cursor"
-#~ msgstr "Instancier sur le cursuer"
-
-#~ msgid "Could not instance scene!"
-#~ msgstr "Impossible d'instancier la scène !"
-
-#~ msgid "Use Default Light"
-#~ msgstr "Utiliser la lumière par défaut"
-
-#~ msgid "Use Default sRGB"
-#~ msgstr "Utiliser sRGB par défaut"
-
-#~ msgid "Default Light Normal:"
-#~ msgstr "Normale de l'éclairage par défaut :"
-
-#~ msgid "Ambient Light Color:"
-#~ msgstr "Couleur de l'éclairage ambient :"
-
-#~ msgid "Invalid parent class name"
-#~ msgstr "Nom de classe parent invalide"
-
-#~ msgid "Valid chars:"
-#~ msgstr "Caractères valides :"
-
-#~ msgid "Valid name"
-#~ msgstr "Nom valide"
-
-#~ msgid "Class name is invalid!"
-#~ msgstr "Le nom de classe est invalide !"
-
-#~ msgid "Parent class name is invalid!"
-#~ msgstr "Le nom de classe parent est invalide !"
-
-#~ msgid "Path property must point to a valid Particles2D node to work."
-#~ msgstr ""
-#~ "La propriété Path doit pointer à un nœud de type Particles2D valide pour "
-#~ "fonctionner."
-
-#~ msgid "Surface"
-#~ msgstr "Surface"
-
-#~ msgid ""
-#~ "A SampleLibrary resource must be created or set in the 'samples' property "
-#~ "in order for SamplePlayer to play sound."
-#~ msgstr ""
-#~ "Une ressource SampleLibrary doit être créée ou définie dans la propriété "
-#~ "\"échantillon\" pour que le SamplePlayer puisse jouer un son."
-
-#~ msgid ""
-#~ "A SampleLibrary resource must be created or set in the 'samples' property "
-#~ "in order for SpatialSamplePlayer to play sound."
-#~ msgstr ""
-#~ "Une ressource de type SampleLibrary doit être créée ou définie dans la "
-#~ "propriété « samples » afin que le SpatialSamplePlayer joue des sons."
-
-#~ msgid "Replaced %d Ocurrence(s)."
-#~ msgstr "%d occurrence(s) remplacée(s)."
-
-#~ msgid "Save Translatable Strings"
-#~ msgstr "Enregistrer les chaînes traduisibles"
-
-#~ msgid "Edit Script Options"
-#~ msgstr "Modifier les options du script"
-
-#~ msgid "Error exporting project!"
-#~ msgstr "Erreur d'exportation du projet !"
-
-#~ msgid "Error writing the project PCK!"
-#~ msgstr "Erreur d'écriture du PCK du projet !"
-
-#~ msgid "No exporter for platform '%s' yet."
-#~ msgstr "Pas d'exportateur pour la plate-forme « %s » actuellement."
-
-#, fuzzy
-#~ msgid "Create Android keystore"
-#~ msgstr "Créer une nouvelle ressource"
-
-#, fuzzy
-#~ msgid "Full name"
-#~ msgstr "Nom valide"
-
-#~ msgid "Organizational unit"
-#~ msgstr "Unité d'organisation"
-
-#, fuzzy
-#~ msgid "Organization"
-#~ msgstr "Transition"
-
-#~ msgid "City"
-#~ msgstr "Ville"
-
-#, fuzzy
-#~ msgid "State"
-#~ msgstr "État :"
-
-#~ msgid "2 letter country code"
-#~ msgstr "Code de pays à 2 lettres"
-
-#, fuzzy
-#~ msgid "Password"
-#~ msgstr "Mot de passe :"
-
-#, fuzzy
-#~ msgid "at least 6 characters"
-#~ msgstr "Caractères valides :"
-
-#, fuzzy
-#~ msgid "File name"
-#~ msgstr "Nouveau nom :"
-
-#~ msgid "Include"
-#~ msgstr "Inclure"
-
-#~ msgid "Group name can't be empty!"
-#~ msgstr "Le nom du groupe ne peut pas être vide !"
-
-#~ msgid "Invalid character in group name!"
-#~ msgstr "Caractère invalide dans le nom du groupe !"
-
-#~ msgid "Add Image Group"
-#~ msgstr "Ajouter un groupe d'images"
-
-#~ msgid "Delete Image Group"
-#~ msgstr "Supprimer le groupe d'images"
-
-#~ msgid "Project Export Settings"
-#~ msgstr "Paramètres d'exportation du projet"
-
-#~ msgid "Target"
-#~ msgstr "Cible"
-
-#~ msgid "Export to Platform"
-#~ msgstr "Exporter vers la plate-forme"
-
-#~ msgid "Export all files in the project directory."
-#~ msgstr "Exporter tous les fichiers dans le répertoire du projet."
-
-#~ msgid "Convert text scenes to binary on export."
-#~ msgstr ""
-#~ "Convertir les scènes en format texte au format binaire à l'exportation."
-
-#~ msgid "Images"
-#~ msgstr "Images"
-
-#~ msgid "Keep Original"
-#~ msgstr "Garder les originaux"
-
-#~ msgid "Compress for Disk (Lossy, WebP)"
-#~ msgstr "Compression pour le disque (avec perte, WebP)"
-
-#~ msgid "Compress for RAM (BC/PVRTC/ETC)"
-#~ msgstr "Compression pour la RAM (BC/PVRTC/ETC)"
-
-#~ msgid "Convert Images (*.png):"
-#~ msgstr "Convertir les images (*.png) :"
-
-#~ msgid "Compress for Disk (Lossy) Quality:"
-#~ msgstr "Qualité de la compression pour le disque (avec perte) :"
-
-#~ msgid "Shrink All Images:"
-#~ msgstr "Réduire toutes les images :"
-
-#~ msgid "Compress Formats:"
-#~ msgstr "Compresser les formats :"
-
-#~ msgid "Groups:"
-#~ msgstr "Groupes :"
-
-#~ msgid "Compress Disk"
-#~ msgstr "Compression pour le disque"
-
-#~ msgid "Compress RAM"
-#~ msgstr "Compression pour la RAM"
-
-#~ msgid "Compress Mode:"
-#~ msgstr "Mode de compression :"
-
-#~ msgid "Lossy Quality:"
-#~ msgstr "Qualité de compression avec perte :"
-
-#~ msgid "Atlas:"
-#~ msgstr "Atlas :"
-
-#~ msgid "Shrink By:"
-#~ msgstr "Réduire de :"
-
-#~ msgid "Preview Atlas"
-#~ msgstr "Aperçu de l'atlas"
-
-#~ msgid "Images:"
-#~ msgstr "Images :"
-
-#~ msgid "Select None"
-#~ msgstr "Ne rien sélectionner"
-
-#~ msgid "Group"
-#~ msgstr "Groupe"
-
-#~ msgid "Samples"
-#~ msgstr "Échantillons"
-
-#~ msgid "Sample Conversion Mode: (.wav files):"
-#~ msgstr "Mode de conversion des échantillons (fichiers .wav) :"
-
-#~ msgid "Compress (RAM - IMA-ADPCM)"
-#~ msgstr "Compresser (RAM - IMA-ADPCM)"
-
-#~ msgid "Sampling Rate Limit (Hz):"
-#~ msgstr "Limite de taux d'échantillonage (Hz) :"
-
-#~ msgid "Trim"
-#~ msgstr "Rogner"
-
-#~ msgid "Trailing Silence:"
-#~ msgstr "Silence de fin :"
-
-#~ msgid "Script Export Mode:"
-#~ msgstr "Mode d'exportation des scripts :"
-
-#~ msgid "Text"
-#~ msgstr "Texte"
-
-#~ msgid "Compiled"
-#~ msgstr "Compilé"
-
-#~ msgid "Encrypted (Provide Key Below)"
-#~ msgstr "Chiffré (insérez une clé ci-dessous)"
-
-#~ msgid "Script Encryption Key (256-bits as hex):"
-#~ msgstr "Clé de chiffrement des scripts (256 bits en hexadécimal) :"
-
-#~ msgid "Export Project PCK"
-#~ msgstr "Exporter le PCK du projet"
-
-#~ msgid "Export..."
-#~ msgstr "Exporter…"
-
-#~ msgid "Project Export"
-#~ msgstr "Exportation de projet"
-
-#~ msgid "BakedLightInstance does not contain a BakedLight resource."
-#~ msgstr "La BakedLightInstance ne contient pas de ressource BakedLight."
-
-#~ msgid "Lighting"
-#~ msgstr "Éclairage"
-
-#~ msgid "Global"
-#~ msgstr "Global"
-
-#~ msgid ""
-#~ "This item cannot be made visible because the parent is hidden. Unhide the "
-#~ "parent first."
-#~ msgstr ""
-#~ "Cet objet ne peut être rendu visible car son parent est caché. Affichez "
-#~ "le parent d'abord."
-
-#~ msgid ""
-#~ "Paths cannot start with '/', absolute paths must start with 'res://', "
-#~ "'user://', or 'local://'"
-#~ msgstr ""
-#~ "Les chemins ne peuvent pas commencer par '/', les chemins absolus doivent "
-#~ "commencer par 'res://', 'user://' ou 'local://'"
-
-#~ msgid "File exists"
-#~ msgstr "Le fichier existe"
-
-#~ msgid "Valid path"
-#~ msgstr "Chemin valide"
-
-#~ msgid "Cannot go into subdir:"
-#~ msgstr "Impossible d'aller dans le sous-répertoire :"
-
-#~ msgid "Imported Resources"
-#~ msgstr "Ressources importées"
-
-#~ msgid "Top (Num7)"
-#~ msgstr "Dessus (Pavé num. 7)"
-
-#~ msgid "Bottom (Shift+Num7)"
-#~ msgstr "Dessous (Maj+Pavé num. 7)"
-
-#~ msgid "Left (Num3)"
-#~ msgstr "Gauche (Pavé num. 3)"
-
-#~ msgid "Right (Shift+Num3)"
-#~ msgstr "Droite (Maj+Pavé num. 3)"
-
-#~ msgid "Front (Num1)"
-#~ msgstr "Devant (Pavé num. 1)"
-
-#~ msgid "Rear (Shift+Num1)"
-#~ msgstr "Arrière (Maj+Pavé num. 1)"
-
-#~ msgid "Perspective (Num5)"
-#~ msgstr "Perspective (Pavé num. 5)"
-
-#~ msgid "Orthogonal (Num5)"
-#~ msgstr "Orthogonale (Pavé num. 5)"
-
-#~ msgid "Selection (F)"
-#~ msgstr "Sélection (F)"
-
-#~ msgid "Align with view (Ctrl+Shift+F)"
-#~ msgstr "Aligner avec la vue (Ctrl+Maj+F)"
-
-#~ msgid "Enable/Disable interpolation when looping animation."
-#~ msgstr "Activer/Désactiver l'interpolation lors de la boucle d'animation."
-
-#~ msgid "Load Layout"
-#~ msgstr "Charger la disposition"
-
-#~ msgid "Inherit Scene"
-#~ msgstr "Hériter la scène"
-
-#~ msgid "Method In Node:"
-#~ msgstr "Méthode dans le nœud :"
-
-#~ msgid "Set Params"
-#~ msgstr "Définir paramètres"
-
-#~ msgid "Live Editing"
-#~ msgstr "Édition en direct"
-
-#~ msgid "File Server"
-#~ msgstr "Serveur de fichiers"
-
-#~ msgid "Deploy File Server Clients"
-#~ msgstr "Déployer des clients de serveur de fichiers"
-
-#~ msgid "Group Editor"
-#~ msgstr "Éditeur de groupes"
-
-#~ msgid "Overwrite Existing Scene"
-#~ msgstr "Écraser la scène existante"
-
-#~ msgid "Overwrite Existing, Keep Materials"
-#~ msgstr "Écraser l'existant, conserver les matériaux"
-
-#~ msgid "Keep Existing, Merge with New"
-#~ msgstr "Conserver l'existant, fusionner avec les nouveautés"
-
-#~ msgid "Keep Existing, Ignore New"
-#~ msgstr "Conserver l'existant, ignorer les nouveautés"
-
-#~ msgid "This Time:"
-#~ msgstr "Cette fois :"
-
-#~ msgid "Next Time:"
-#~ msgstr "Les prochaines fois :"
-
-#~ msgid "%d frames"
-#~ msgstr "%d images"
-
-#~ msgid ""
-#~ "NOTICE: You are not forced to import textures for 2D projects. Just copy "
-#~ "your .jpg or .png files to your project, and change export options later. "
-#~ "Atlases can be generated on export too."
-#~ msgstr ""
-#~ "NOTICE : Vous n'êtes pas obligé d'importer des textures pour des projets "
-#~ "en 2D. Copiez simplement vos fichiers .jpg ou .png dans le projet, et "
-#~ "modifiez les options d'exportation par la suite. Vous pouvez également "
-#~ "générer des atlas à l'exportation."
-
-#~ msgid "Merging..."
-#~ msgstr "Fusion..."
diff --git a/editor/translations/he.po b/editor/translations/he.po
index ed2657f46b..e23a98390e 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -2,25 +2,26 @@
# Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
-#
# Daniel <lorddaniel09@gmail.com>, 2018.
# Ben Golan <golanben4@gmail.com>, 2017.
# Luc Stepniewski <lior@gradstein.info>, 2017.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2018.
-#
+# RaikaRakka <shaiyatta@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-04-18 16:38+0000\n"
-"Last-Translator: Daniel <lorddaniel09@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
+"Last-Translator: RaikaRakka <shaiyatta@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/"
"godot/he/>\n"
"Language: he\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
-"X-Generator: Weblate 3.0-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -267,7 +268,6 @@ msgstr "ליצור %d רצועות חדשות ולהכניס מפתחות?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -545,15 +545,19 @@ msgstr "להחליף הכול"
msgid "Selection Only"
msgstr "בחירה בלבד"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "להתקרב"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "להתרחק"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "×יפוס התקריב"
@@ -564,8 +568,8 @@ msgstr "×זהרות"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "להתקרב"
+msgid "Font Size:"
+msgstr "מבט קדמי"
#: editor/code_editor.cpp
msgid "Line:"
@@ -727,8 +731,8 @@ msgid "Recent:"
msgstr "×חרוני×:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "חיפוש:"
@@ -775,8 +779,7 @@ msgid "Resource"
msgstr "מש×ב"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "נתיב"
@@ -1229,8 +1232,7 @@ msgid "Node Name:"
msgstr "×©× ×”×ž×¤×¨×§:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ש×"
@@ -1706,6 +1708,12 @@ msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×©×•×¨×© ×”×¢×¥."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2112,7 +2120,7 @@ msgid "Undo"
msgstr "ביטול"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "ביצוע חוזר"
@@ -2136,7 +2144,7 @@ msgstr "הגדרות מיז×"
msgid "Export"
msgstr "ייצו×"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "כלי×"
@@ -2556,6 +2564,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2572,8 +2586,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2995,7 +3008,7 @@ msgstr "שכפול…"
msgid "Move To..."
msgstr "העברה ×ל…"
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "פתיחת סקריפט מהירה…"
@@ -3137,7 +3150,7 @@ msgstr "הפעולה ‚%s’ כבר קיימת!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "×©× ×©×’×•×™."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3392,14 +3405,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "יצירת מצולע"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "עריכת מצולע"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3407,29 +3420,33 @@ msgid "Insert Point"
msgstr "הוספת נקודה"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "עריכת מצולע (הסרת נקודה)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "הסרת מצולע ונקודה"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "יצירת מצולע חדש מ×פס"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "מחיקת נקודות"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
msgstr "מחיקת נקודות"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3476,17 +3493,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "מחיקת נקודות"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "מחיקת נקודות"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "הזזת נקודה"
@@ -3564,7 +3570,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4112,7 +4117,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4262,21 +4267,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "להתרחק"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "להתרחק"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "להתקרב"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4534,8 +4537,17 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr ""
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "יצירת מצולע"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "עריכת מצולע"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "עריכת מצולע (הסרת נקודה)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4637,35 +4649,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5035,6 +5021,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5062,6 +5052,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5077,11 +5071,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "מחיקת נקודה"
@@ -5138,6 +5127,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5149,7 +5142,14 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
+msgstr "שינוי קנה מידה של מצולע"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5193,10 +5193,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "התמרה"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "פתיחת עורך דו־ממד"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5220,11 +5230,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "יצירת מצולע"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "הזזת נקודה"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5252,20 +5258,20 @@ msgid "Scale Polygon"
msgstr "שינוי קנה מידה של מצולע"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5410,19 +5416,23 @@ msgid "Error saving file!"
msgstr "שגי××” בשמירה"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "שגי××” בשמירת ערכת העיצוב"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "שגי××” בשמירה"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "שגי××” ×‘×™×™×‘×•× ×¢×¨×›×ª הנוש×"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "שגי××” בייבו×"
#: editor/plugins/script_editor_plugin.cpp
@@ -5445,6 +5455,14 @@ msgid "Import Theme"
msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "שגי××” בשמירת ערכת העיצוב"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "שגי××” בשמירה"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "שמירת ערכת עיצוב בש×…"
@@ -5485,8 +5503,9 @@ msgid "File"
msgstr "קובץ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "פתיחה"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5515,6 +5534,11 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "רענון ערכת העיצוב"
@@ -5523,10 +5547,6 @@ msgid "Save Theme"
msgstr "שמירת ערכת העיצוב"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "שמירת ערכת העיצוב בש×"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "סגירת מסמכי×"
@@ -5636,6 +5656,10 @@ msgstr ""
msgid "Go to Function"
msgstr "מעבר לפונקציה…"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "ניתן להשמיט מש××‘×™× ×ž×ž×¢×¨×›×ª ×”×§×‘×¦×™× ×‘×œ×‘×“."
@@ -5668,10 +5692,6 @@ msgstr "הגדלת ×ות ר×שונה"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6380,11 +6400,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6627,12 +6652,13 @@ msgid "Clear transform"
msgstr "התמרה"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "להסיר ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×ž×”×ž×™×–×? (××™ ×פשר לשחזר)"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6643,13 +6669,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "הדבקת משתני×"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "מחיקת נקודות"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "יצירת מצולע"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6679,15 +6726,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "למחוק ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™×?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "מחיקת נקודות"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6705,12 +6762,18 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "This property can't be changed."
msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×¡×¦× ×”."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6728,6 +6791,10 @@ msgid "Light"
msgstr "ימין"
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6766,7 +6833,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "×™×™×¦×•× ×ž×™×–×"
#: editor/project_export.cpp
@@ -7293,7 +7360,7 @@ msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "כללי"
#: editor/project_settings_editor.cpp
msgid "Override For..."
@@ -8241,7 +8308,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9090,7 +9157,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9135,7 +9202,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9225,6 +9294,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "מצב גולמי"
@@ -9241,6 +9314,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr "× × ×œ×מת…"
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9297,10 +9374,6 @@ msgstr "גודל הגופן שגוי."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9318,6 +9391,27 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "יצירת מצולע"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "יצירת מצולע חדש מ×פס"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "להתרחק"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "להתקרב"
+
+#~ msgid "Save Theme As"
+#~ msgstr "שמירת ערכת העיצוב בש×"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "להתקרב"
+
#~ msgid "Class List:"
#~ msgstr "רשימת מחלקות:"
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index 92f64ab6d1..1902ec7335 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -8,15 +8,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-07 18:27+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
"Last-Translator: Vikram1323 <vikram1323@gmail.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/godot-engine/godot/"
"hi/>\n"
"Language: hi\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -257,7 +259,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -527,15 +528,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "बड़ा करो"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "छोटा करो"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "रीसेट आकार"
@@ -544,9 +549,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "बड़ा करो"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -716,8 +720,8 @@ msgid "Recent:"
msgstr "हाल ही में किया:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
#, fuzzy
msgid "Search:"
@@ -771,8 +775,7 @@ msgid "Resource"
msgstr "संसाधन"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "पथ"
@@ -1242,8 +1245,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1706,6 +1708,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2103,7 +2111,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2127,7 +2135,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2539,6 +2547,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2555,8 +2569,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2979,7 +2992,7 @@ msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3106,7 +3119,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3354,44 +3367,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "à¤à¤• नया बनाà¤à¤‚"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3436,16 +3450,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "à¤à¤• नया बनाà¤à¤‚"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3521,7 +3525,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4059,7 +4062,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4207,21 +4210,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "छोटा करो"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "छोटा करो"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "बड़ा करो"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4474,7 +4475,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4576,35 +4586,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4972,6 +4956,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4999,6 +4988,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5014,11 +5007,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5075,6 +5063,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5085,7 +5077,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5127,7 +5125,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5151,12 +5158,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon"
-msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5184,19 +5186,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5336,20 +5338,24 @@ msgid "Error saving file!"
msgstr "लोड हो रहा है तà¥à¤°à¥à¤Ÿà¤¿à¤¯à¤¾à¤!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "लोड हो रहा है तà¥à¤°à¥à¤Ÿà¤¿à¤¯à¤¾à¤!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5369,6 +5375,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5409,8 +5423,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "खोलो इसे"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5438,15 +5453,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5556,6 +5571,10 @@ msgstr ""
msgid "Go to Function"
msgstr "कारà¥à¤¯à¥‹à¤‚:"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5588,10 +5607,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6282,11 +6297,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6525,12 +6545,13 @@ msgid "Clear transform"
msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "परियोजना से चयनित फ़ाइलें निकालें? (कोई पूरà¥à¤µà¤µà¤¤ नहीं)"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6541,13 +6562,32 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6577,15 +6617,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "चयनित फ़ाइलें हटाà¤à¤‚?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6603,11 +6653,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6623,6 +6679,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6659,7 +6719,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8110,7 +8170,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8955,7 +9015,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8998,7 +9058,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9088,6 +9150,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9104,6 +9170,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9160,10 +9230,6 @@ msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9182,6 +9248,18 @@ msgid "Varyings can only be assigned in vertex function."
msgstr ""
#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "छोटा करो"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "बड़ा करो"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "बड़ा करो"
+
+#, fuzzy
#~ msgid "Match case"
#~ msgstr "à¤à¤• जैसा:"
@@ -9189,9 +9267,6 @@ msgstr ""
#~ msgid "Disabled"
#~ msgstr "बंद कर दिया गया है"
-#~ msgid "Edit Node Curve"
-#~ msgstr "नोड वकà¥à¤° संपादित करें"
-
#~ msgid "Thanks!"
#~ msgstr "धनà¥à¤¯à¤µà¤¾à¤¦!"
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 5524b9319d..fa58298d97 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -6,18 +6,21 @@
# Nagy Lajos <neutron9707@gmail.com>, 2017.
# Sandor Domokos <sandor.domokos@gmail.com>, 2017-2018.
# Varga Dániel <danikah.danikah@gmail.com>, 2016-2018.
+# Gabor Csordas <gaborcsordas@yahoo.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-06-17 07:39+0000\n"
-"Last-Translator: Ãrpád Horváth <horvatha4@googlemail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
+"Last-Translator: Varga Dániel <danikah.danikah@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hu/>\n"
"Language: hu\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.0.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -33,11 +36,11 @@ msgstr "Nincs elég bájt a bájtok dekódolására, vagy hibás formátum."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr ""
+msgstr "Érvénytelen bemenet %1 (nem átadott) a kifejezésben."
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr ""
+msgstr "self nem használható, mert a példány null (nincs átadva)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -133,7 +136,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "Bezier Görbe Nyomvonal"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
@@ -219,7 +222,7 @@ msgstr "Jövő"
#: editor/animation_track_editor.cpp
msgid "Nearest"
-msgstr ""
+msgstr "Legközelebbi"
#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
@@ -269,7 +272,6 @@ msgstr "Létrehoz %d ÚJ nyomvonalat és beilleszti a kulcsokat?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -546,15 +548,19 @@ msgstr "Mind Lecserélése"
msgid "Selection Only"
msgstr "Csak Kiválsztás"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Nagyítás"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Kicsinyítés"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Nagyítás Visszaállítása"
@@ -564,8 +570,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Nagyítás"
+msgid "Font Size:"
+msgstr "Körvonal Mérete:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -730,8 +736,8 @@ msgid "Recent:"
msgstr "Legutóbbi:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Keresés:"
@@ -782,8 +788,7 @@ msgid "Resource"
msgstr "Forrás"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Útvonal"
@@ -1243,8 +1248,7 @@ msgid "Node Name:"
msgstr "Node neve:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Név"
@@ -1727,6 +1731,12 @@ msgstr "Ezt a műveletet nem lehet fagyökér nélkül végrehajtani."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2179,7 +2189,7 @@ msgid "Undo"
msgstr "Visszavonás"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Mégis"
@@ -2203,7 +2213,7 @@ msgstr "Projekt Beállítások"
msgid "Export"
msgstr "Exportálás"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Eszközök"
@@ -2642,6 +2652,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2658,8 +2674,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3090,7 +3105,7 @@ msgstr "Megkettőzés..."
msgid "Move To..."
msgstr "Ãthelyezés..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Szkript gyors megnyitás..."
@@ -3233,7 +3248,7 @@ msgstr "HIBA: Animáció név már létezik!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Érvénytelen név."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3490,14 +3505,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Sokszög Létrehozása"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Sokszög Szerkesztése"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3505,25 +3520,28 @@ msgid "Insert Point"
msgstr "Pont Beszúrása"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Sokszög Szerkesztése (Pont Eltávolítása)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Sokszög és Pont Eltávolítása"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Új sokszög létrehozása a semmiből"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Pontok Törlése"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Meglévő sokszög módosítása:\n"
"Bal Egérgomb: Pont Mozgatása.\n"
@@ -3531,8 +3549,10 @@ msgstr ""
"Jobb Egérgomb: Pont Eltörlése."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Pontok Törlése"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "Jobb Egérgomb: Pont Törlése."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3578,17 +3598,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Pontok Törlése"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Jobb Egérgomb: Pont Törlése."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Pont Mozgatása"
@@ -3666,7 +3675,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4219,7 +4227,7 @@ msgstr "Mind"
msgid "Plugins"
msgstr "Bővítmények"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Rendezés:"
@@ -4382,21 +4390,19 @@ msgid "Paste Pose"
msgstr "Póz Beillesztése"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Kicsinyítés"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Kicsinyítés"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Nagyítás"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Kiválasztó Mód"
@@ -4662,8 +4668,17 @@ msgstr ""
"Fogd és vidd + Alt: Node típusának megváltoztatása"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Poly3D Létrehozása"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Sokszög Létrehozása"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Sokszög Szerkesztése"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Sokszög Szerkesztése (Pont Eltávolítása)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4765,37 +4780,9 @@ msgid "Item List Editor"
msgstr "Elemlista Szerkesztő"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Nincs OccluderPolygon2D erőforrás ezen a Node-on.\n"
-"Létrehoz egyet és hozzárendeli a Node-hoz?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Ãrnyékoló Sokszög Létrehozása"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Új sokszög létrehozása a semmiből."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Létező sokszög szerkesztése:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Bal Egérgomb: Pont Mozgatása."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + Bal Egérgomb: Szakasz Felosztása."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Jobb Egérgomb: Pont Törlése."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "A háló üres!"
@@ -5167,6 +5154,11 @@ msgid "Add Point to Curve"
msgstr "Pont Hozzáadása a Görbéhez"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Görbe Lezárása"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Pont Mozgatása a Görbén"
@@ -5194,6 +5186,11 @@ msgid "Click: Add Point"
msgstr "Kattintás: Pont Hozzáadása"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Szakasz Felosztása (görbén)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Jobb Kattintás: Pont Törlése"
@@ -5209,11 +5206,6 @@ msgstr "Pont Hozzáadása (üres helyre)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Szakasz Felosztása (görbén)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Pont Törlése"
@@ -5270,6 +5262,10 @@ msgstr "Ki-Vezérlő Pont Eltávolítása"
msgid "Remove In-Control Point"
msgstr "Be-Vezérlő Pont Eltávolítása"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Szakasz Felosztása (görbén)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5282,10 +5278,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Csontok Mutatása"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "UV Térkép Létrehozása"
@@ -5327,10 +5329,20 @@ msgid "Transform UV Map"
msgstr "UV Térkép Transzformálása"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Sokszög Létrehozása"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "2D UV Sokszög Szerkesztő"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "2D UV Sokszög Szerkesztő"
@@ -5355,11 +5367,7 @@ msgstr "Csontok Létrehozása"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Sokszög Létrehozása"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Pont Mozgatása"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5387,19 +5395,19 @@ msgid "Scale Polygon"
msgstr "Sokszög Skálázása"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5549,19 +5557,23 @@ msgid "Error saving file!"
msgstr "Hiba TileSet mentésekor!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "HIba történt a téma mentésekor"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Hiba mentés közben"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Hiba történt a téma importálásakor"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Hiba importáláskor"
#: editor/plugins/script_editor_plugin.cpp
@@ -5584,6 +5596,14 @@ msgid "Import Theme"
msgstr "Téma Importálása"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "HIba történt a téma mentésekor"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Hiba mentés közben"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Téma Mentése Másként..."
@@ -5625,8 +5645,8 @@ msgstr "Fájl"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Fájlok Megtekintése"
+msgid "Open..."
+msgstr "Megnyit"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5655,6 +5675,11 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Téma Importálása"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Téma Újratöltése"
@@ -5663,10 +5688,6 @@ msgid "Save Theme"
msgstr "Téma Mentése"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Téma Mentése Másként"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Dokumentációs Lapok Bezárása"
@@ -5776,6 +5797,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Ugrás Funkcióra..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Csak a fájlrendszerből eredő erőforrásokat lehet bedobni."
@@ -5809,10 +5834,6 @@ msgstr "Szó Eleji Nagybetű"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6518,11 +6539,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Fogantyú Beállítása"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6663,7 +6690,7 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Style"
-msgstr ""
+msgstr "Stílus"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Font"
@@ -6671,7 +6698,7 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
-msgstr ""
+msgstr "Szín"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
@@ -6705,7 +6732,7 @@ msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket Fill"
-msgstr ""
+msgstr "Kitöltés egy színnel"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -6765,12 +6792,12 @@ msgid "Clear transform"
msgstr "Animáció transzformáció változtatás"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Jelenlegi tétel eltávolítása"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6782,13 +6809,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Animáció Beillesztése"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Jobb Egérgomb: Pont Törlése."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Új sokszög létrehozása a semmiből."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6818,15 +6866,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Törli a kiválasztott fájlokat?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Pontok Törlése"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6844,13 +6902,20 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "This property can't be changed."
msgstr "Ezt a műveletet nem lehet végrehajtani egy Scene nélkül."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
-msgstr ""
+#, fuzzy
+msgid "TileSet"
+msgstr "TileSet-re..."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vertex"
@@ -6865,6 +6930,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "VisualShader"
msgstr "Ãrnyaló"
@@ -6904,7 +6973,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Projekt Exportálása"
#: editor/project_export.cpp
@@ -7055,7 +7124,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Import Existing Project"
-msgstr ""
+msgstr "Meglévő Projekt Importálása"
#: editor/project_manager.cpp
msgid "Import & Edit"
@@ -7063,7 +7132,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Create New Project"
-msgstr ""
+msgstr "Új Projekt Létrehozása"
#: editor/project_manager.cpp
msgid "Create & Edit"
@@ -7229,19 +7298,19 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "Device"
-msgstr ""
+msgstr "Eszköz"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
-msgstr ""
+msgstr "Control+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
@@ -7293,7 +7362,7 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "Axis"
-msgstr ""
+msgstr "Tengely"
#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
@@ -7313,19 +7382,19 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr ""
+msgstr "Gomb"
#: editor/project_settings_editor.cpp
msgid "Left Button."
-msgstr ""
+msgstr "Bal Egérgomb."
#: editor/project_settings_editor.cpp
msgid "Right Button."
-msgstr ""
+msgstr "Jobb Egérgomb."
#: editor/project_settings_editor.cpp
msgid "Middle Button."
-msgstr ""
+msgstr "Középső Egérgomb."
#: editor/project_settings_editor.cpp
msgid "Wheel Up."
@@ -8376,7 +8445,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9231,7 +9300,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9274,7 +9343,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9369,6 +9440,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Az animációs fa érvénytelen."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9385,6 +9460,10 @@ msgstr "Figyelem!"
msgid "Please Confirm..."
msgstr "Kérem Erősítse Meg..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9446,10 +9525,6 @@ msgstr "Érvénytelen betűtípus méret."
msgid "Input"
msgstr "Bemenet Hozzáadása"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9467,6 +9542,53 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Sokszög Létrehozása"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Új sokszög létrehozása a semmiből"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Kicsinyítés"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Nagyítás"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Poly3D Létrehozása"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Nincs OccluderPolygon2D erőforrás ezen a Node-on.\n"
+#~ "Létrehoz egyet és hozzárendeli a Node-hoz?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Létező sokszög szerkesztése:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Bal Egérgomb: Pont Mozgatása."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl + Bal Egérgomb: Szakasz Felosztása."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Jobb Egérgomb: Pont Törlése."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Fájlok Megtekintése"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Téma Mentése Másként"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Nagyítás"
+
#~ msgid "Class List:"
#~ msgstr "Osztálylista:"
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 04d72d94d2..2641fa5c42 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -18,15 +18,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-07-15 12:38+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
"Last-Translator: Romi Kusuma Bakti <romikusumab@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot/id/>\n"
"Language: id\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.1-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -277,7 +279,6 @@ msgstr "Buat track BARU %d dan masukkan tombol-tombol?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -554,15 +555,19 @@ msgstr "Ganti Semua"
msgid "Selection Only"
msgstr "Hanya yang Dipilih"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Perbesar Pandangan"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Perkecil Pandangan"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Kebalikan Semula Pandangan"
@@ -572,8 +577,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Perbesar Pandangan"
+msgid "Font Size:"
+msgstr "Tampilan Depan."
#: editor/code_editor.cpp
msgid "Line:"
@@ -739,8 +744,8 @@ msgid "Recent:"
msgstr "Saat ini:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Cari:"
@@ -791,8 +796,7 @@ msgid "Resource"
msgstr "Resource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Path"
@@ -1256,8 +1260,7 @@ msgid "Node Name:"
msgstr "Nama Node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nama"
@@ -1740,6 +1743,12 @@ msgstr "Operasi ini tidak dapat diselesaikan tanpa root pohon."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2183,7 +2192,7 @@ msgid "Undo"
msgstr "Batal"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Ulangi"
@@ -2207,7 +2216,7 @@ msgstr "Pengaturan Proyek"
msgid "Export"
msgstr "Ekspor"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Alat"
@@ -2645,6 +2654,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2661,8 +2676,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "Scene Baru"
@@ -3098,7 +3112,7 @@ msgstr "Gandakan..."
msgid "Move To..."
msgstr "Pindahkan ke..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Scene Baru"
@@ -3241,7 +3255,7 @@ msgstr "KESALAHAN: Nama animasi sudah ada!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Nama tidak sah."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3499,16 +3513,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Poly"
+msgid "Create Polygon"
msgstr "Buat Bidang"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#, fuzzy
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr "Sunting Bidang"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3516,28 +3528,28 @@ msgid "Insert Point"
msgstr "Tambah Titik"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Sunting Bidang (Hapus Titik)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr "Hapus Bidang dan Titik"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create a new polygon from scratch"
-msgstr "Buat bidang baru dari awal"
+msgid "Create points."
+msgstr "Hapus Titik"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Sunting bidang yang ada:\n"
"LMB: Pindahkan Titik.\n"
@@ -3545,8 +3557,10 @@ msgstr ""
"RMB: Hapus Titik."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Hapus Titik"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "Beri Skala Seleksi"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3591,17 +3605,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Hapus Titik"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Beri Skala Seleksi"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3680,7 +3683,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Tambahkan Node"
@@ -4247,7 +4249,7 @@ msgstr "Semua"
msgid "Plugins"
msgstr "Pengaya"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sortir:"
@@ -4409,21 +4411,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Perkecil Pandangan"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Perkecil Pandangan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Perbesar Pandangan"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4683,8 +4683,18 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr ""
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Buat Bidang"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Poly"
+msgstr "Sunting Bidang"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Sunting Bidang (Hapus Titik)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4793,36 +4803,9 @@ msgid "Item List Editor"
msgstr "Penyunting Daftar Item"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Edit existing polygon:"
-msgstr "Sunting poligon yang ada:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5193,6 +5176,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Sunting Kurva Node"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5220,6 +5208,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5235,11 +5227,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5300,6 +5287,10 @@ msgstr "Hapus Autoload"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5311,7 +5302,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5356,11 +5353,21 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Buat Bidang"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Penyunting UV Poligon 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Polygon 2D UV Editor"
msgstr "Penyunting UV Poligon 2D"
@@ -5383,12 +5390,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Buat Bidang"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Hapus Sinyal"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5415,20 +5418,20 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Pilih Berkas untuk Dipindai"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5575,20 +5578,24 @@ msgid "Error saving file!"
msgstr "Error menyimpan TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Error saat menyimpan."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Galat saat memindahkan:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Galat saat mengimpor:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Galat saat mengimpor:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5610,6 +5617,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5652,8 +5667,8 @@ msgstr "Berkas"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "File:"
+msgid "Open..."
+msgstr "Buka"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5684,6 +5699,11 @@ msgid "Theme"
msgstr "Simpan Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Mengimpor scene..."
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Muat Ulang Tema"
@@ -5692,10 +5712,6 @@ msgid "Save Theme"
msgstr "Simpan Tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Simpan Tema Sebagai"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Tutup Dokumentasi"
@@ -5806,6 +5822,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Tambahkan Fungsi"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5838,10 +5858,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6562,11 +6578,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6815,12 +6836,12 @@ msgstr "Ubah Transformasi Animasi"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Tambahkan Node (Node-node) dari Tree"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Hapus Sinyal"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6832,13 +6853,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Tempelkan Animasi"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Beri Skala Seleksi"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Buat Bidang"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6868,16 +6910,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Hapus file yang dipilih?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Simpan sumber yang sedang diatur."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Hapus Titik"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Simpan sumber yang sedang diatur."
@@ -6896,12 +6949,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Simpan sumber yang sedang diatur."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Operasi ini tidak dapat diselesaikan tanpa scene."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6919,6 +6979,11 @@ msgid "Light"
msgstr "Kanan"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Tambahkan Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6960,7 +7025,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Ekspor Projek"
#: editor/project_export.cpp
@@ -8494,7 +8559,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Argumen langkah adalah nol!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9433,7 +9499,7 @@ msgstr ""
"ciptakan sebuah resource bentuk untuk itu!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9486,7 +9552,9 @@ msgstr ""
"node Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9585,6 +9653,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9602,6 +9674,10 @@ msgstr "Peringatan!"
msgid "Please Confirm..."
msgstr "Mohon konfirmasi..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9669,10 +9745,6 @@ msgstr "Ukuran font tidak sah."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9690,6 +9762,37 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Create Poly"
+#~ msgstr "Buat Bidang"
+
+#, fuzzy
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Buat bidang baru dari awal"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Perkecil Pandangan"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Perbesar Pandangan"
+
+#, fuzzy
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Sunting poligon yang ada:"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "File:"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Simpan Tema Sebagai"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Perbesar Pandangan"
+
#~ msgid "Class List:"
#~ msgstr "Daftar Class:"
@@ -9769,9 +9872,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Ubah Trek Anim ke Wrap Mode"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Sunting Kurva Node"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "Edit Kurva Pilihan"
@@ -10043,9 +10143,6 @@ msgstr ""
#~ msgid "Texture Options"
#~ msgstr "Opsi Tekstur"
-#~ msgid "Error importing:"
-#~ msgstr "Galat saat mengimpor:"
-
#~ msgid "Max Texture Size:"
#~ msgstr "Ukuran Tekstur Maksimum:"
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 518e43ac10..cc1a74d971 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -7,15 +7,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-15 19:30+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
"Last-Translator: Jóhannes G. Þorsteinsson <johannesg@johannesg.com>\n"
"Language-Team: Icelandic <https://hosted.weblate.org/projects/godot-engine/"
"godot/is/>\n"
"Language: is\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -262,7 +264,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -535,15 +536,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -552,7 +557,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -710,8 +715,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -758,8 +763,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1211,8 +1215,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1668,6 +1671,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2065,7 +2074,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2089,7 +2098,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2500,6 +2509,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2516,8 +2531,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2931,7 +2945,7 @@ msgstr "Hreyfimynd Tvöfalda Lykla"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3054,7 +3068,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3300,44 +3314,43 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Breyta Viðbót"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3382,15 +3395,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3466,7 +3470,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4001,7 +4004,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4149,15 +4152,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4413,7 +4416,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4515,35 +4526,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4911,6 +4896,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4938,6 +4928,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4953,11 +4947,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5014,6 +5003,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5024,7 +5017,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5065,7 +5064,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5089,11 +5096,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5121,19 +5124,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5271,19 +5274,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5303,6 +5306,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5343,7 +5354,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5372,15 +5383,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5487,6 +5498,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5519,10 +5534,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6211,11 +6222,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6454,12 +6470,13 @@ msgid "Clear transform"
msgstr "Breyta umbreytingu"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "Fjarlægja val"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6470,13 +6487,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6506,15 +6541,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Afrita val"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Afrita val"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6532,11 +6577,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6552,6 +6603,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6588,7 +6643,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8035,7 +8090,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8879,7 +8934,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8922,7 +8977,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9010,6 +9067,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9026,6 +9087,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9082,10 +9147,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9127,10 +9188,6 @@ msgstr ""
#~ msgstr "Anim track breyta hulum ham"
#, fuzzy
-#~ msgid "Edit Node Curve"
-#~ msgstr "Breyta hnútnum Ferill"
-
-#, fuzzy
#~ msgid "Anim Add Key"
#~ msgstr "Anim bæta við lykli"
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 3a1f0a2dd2..2906fabba7 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -27,7 +27,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-16 16:07+0000\n"
+"PO-Revision-Date: 2018-12-13 14:40+0100\n"
"Last-Translator: Davide Wayan Mores <moresdavidewayan@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
@@ -36,7 +36,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -290,7 +290,6 @@ msgstr "Creare %d NUOVE tracce e inserire key?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -568,15 +567,19 @@ msgstr "Rimpiazza Tutti"
msgid "Selection Only"
msgstr "Solo Selezione"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom In"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom Out"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Resetta Zoom"
@@ -587,8 +590,8 @@ msgstr "Avvertimento"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Zoom(%):"
+msgid "Font Size:"
+msgstr "Dimensione Font sorgente:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -754,8 +757,8 @@ msgid "Recent:"
msgstr "Recenti:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Cerca:"
@@ -806,8 +809,7 @@ msgid "Resource"
msgstr "Risorsa"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Percorso"
@@ -1273,8 +1275,7 @@ msgid "Node Name:"
msgstr "Nome Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
@@ -1758,6 +1759,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2207,7 +2214,7 @@ msgid "Undo"
msgstr "Annulla"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Redo"
@@ -2231,7 +2238,7 @@ msgstr "Impostazioni Progetto"
msgid "Export"
msgstr "Esporta"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Strumenti"
@@ -2672,6 +2679,12 @@ msgstr "Assegna"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2688,8 +2701,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Scegli una Vista"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nuovo Script"
@@ -3126,7 +3138,7 @@ msgstr "Duplica..."
msgid "Move To..."
msgstr "Sposta in..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Nuovo Script"
@@ -3269,7 +3281,7 @@ msgstr "ERRORE: Il nome dell'animazione esiste già!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Nome Invalido."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3528,14 +3540,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Crea Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Modifica Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3543,25 +3555,28 @@ msgid "Insert Point"
msgstr "Inserisci Punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Modifica Poly (Rimuovi Punto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Rimuovi Poligono e Punto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Crea un nuovo poligono da zero"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Elimina Punti"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Modifica poligono esistente:\n"
"LMB: muovi punto.\n"
@@ -3569,8 +3584,10 @@ msgstr ""
"RMB: cancella punto."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Elimina Punti"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "RMB: Elimina Punto."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3616,17 +3633,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Elimina Punti"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Elimina Punto."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Sposta Punto"
@@ -3705,7 +3711,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Aggiungi Nodo"
@@ -4259,7 +4264,7 @@ msgstr "Tutti"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordina:"
@@ -4421,21 +4426,19 @@ msgid "Paste Pose"
msgstr "Incolla Posa"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zoom Out"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zoom Reset"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zoom In"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Modalità di Selezione"
@@ -4702,8 +4705,17 @@ msgstr ""
"Premi & Trascina + Alt : Cambia tipo del nodo"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Crea Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Crea Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Modifica Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Modifica Poly (Rimuovi Punto)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4810,38 +4822,9 @@ msgid "Item List Editor"
msgstr "Editor Lista Elementi"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Nessuna risorsa OccluderPolygon2D su questo nodo.\n"
-"Crearne una ed assegnarla?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crea Poligono di occlusione"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crea un nuovo poligono dal nulla."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Modifica poligono esistente:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Sposta punto."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: dividi Segmento."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Elimina Punto."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "La mesh è vuota!"
@@ -5217,6 +5200,11 @@ msgid "Add Point to Curve"
msgstr "Aggiungi Punto a Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Chiudi curva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Sposta Punto in curva"
@@ -5244,6 +5232,11 @@ msgid "Click: Add Point"
msgstr "Click: Aggiungi Punto"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Spezza Segmento (in curva)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Click Destro: Elimina Punto"
@@ -5259,11 +5252,6 @@ msgstr "Aggiungi Punto (in sapzio vuoto)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Spezza Segmento (in curva)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Elimina Punto"
@@ -5320,6 +5308,10 @@ msgstr "Rimuovi Punto Out-Control"
msgid "Remove In-Control Point"
msgstr "Rimuovi Punto In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Spezza Segmento (in curva)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5332,10 +5324,19 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Mostra Ossa"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Nessuna texture in questo nodo.\n"
+"Imposta una texture per poter modificare la regione."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Crea UV Map"
@@ -5377,10 +5378,20 @@ msgid "Transform UV Map"
msgstr "Trasla UV Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipo Transform"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV Editor"
@@ -5405,11 +5416,7 @@ msgstr "Crea Ossa"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Crea Poly"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Sposta Punto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5437,20 +5444,20 @@ msgid "Scale Polygon"
msgstr "Scala Poligono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Prima seleziona un oggetto di impostazione!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5600,19 +5607,23 @@ msgid "Error saving file!"
msgstr "Errore di salvataggio TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Errore durante il salvataggio del tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Errore di salvataggio"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Errore di importazione tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Errore di importazione"
#: editor/plugins/script_editor_plugin.cpp
@@ -5635,6 +5646,14 @@ msgid "Import Theme"
msgstr "Importa Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Errore durante il salvataggio del tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Errore di salvataggio"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Salva Tema Come..."
@@ -5677,8 +5696,8 @@ msgstr "File"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Vedi Files"
+msgid "Open..."
+msgstr "Apri"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5707,6 +5726,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importa Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Ricarica Tema"
@@ -5715,10 +5739,6 @@ msgid "Save Theme"
msgstr "Salva Tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Salva Tema Come"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Chiudi Documentazione"
@@ -5828,6 +5848,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Vai a Funzione..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Only resources from filesystem can be dropped."
@@ -5862,10 +5886,6 @@ msgstr "Aggiungi maiuscola iniziale"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6581,11 +6601,18 @@ msgid "Set Region Rect"
msgstr "Imposta Region Rect"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Imposta Maniglia"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modalità Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Nessuno>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6833,12 +6860,12 @@ msgstr "Transform"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Aggiungi Nodo(i) Da Albero"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Rimuovi Punto Percorso"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6850,13 +6877,34 @@ msgid "Merge from Scene"
msgstr "Unisci da Scena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Incolla Animazione"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "RMB: Elimina Punto."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Crea un nuovo poligono dal nulla."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6886,16 +6934,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Eliminare i file selezionati?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Salva la risorsa in modifica."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Elimina Punti"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Salva la risorsa in modifica."
@@ -6914,11 +6973,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Salva la risorsa in modifica."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Questa operazione non può essere eseguita senza una scena."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "TileSet"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6937,6 +7004,11 @@ msgstr "Destra"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Aggiungi Nodo"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Shader"
@@ -6978,7 +7050,7 @@ msgstr "Aggiungi..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Preset Esportazione:"
#: editor/project_export.cpp
@@ -8545,7 +8617,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "step argument è zero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9525,7 +9598,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass."
#: scene/3d/cpu_particles.cpp
@@ -9579,7 +9652,9 @@ msgstr ""
"Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9688,6 +9763,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Animation tree invalido."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -9705,6 +9784,10 @@ msgstr "Attenzione!"
msgid "Please Confirm..."
msgstr "Per Favore Conferma..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9775,11 +9858,6 @@ msgstr "Dimensione font Invalida."
msgid "Input"
msgstr "Aggiungi Input"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Nessuno>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9797,6 +9875,57 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Crea Poly"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Crea un nuovo poligono da zero"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zoom Out"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zoom In"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Crea Poly3D"
+
+#, fuzzy
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Nessuna risorsa OccluderPolygon2D su questo nodo.\n"
+#~ "Crearne una ed assegnarla?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Modifica poligono esistente:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Sposta punto."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: dividi Segmento."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Elimina Punto."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Vedi Files"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Salva Tema Come"
+
+#~ msgid "<None>"
+#~ msgstr "<Nessuno>"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zoom(%):"
+
#~ msgid "Class List:"
#~ msgstr "Lista Classi:"
@@ -10528,9 +10657,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "Font Sorgente:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Dimensione Font sorgente:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Risorsa di destin. :"
@@ -11374,13 +11500,6 @@ msgstr ""
#~ msgid "Scale Region Editor"
#~ msgstr "Scala Editor Regioni"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "Nessuna texture in questo nodo.\n"
-#~ "Imposta una texture per poter modificare la regione."
-
#~ msgid "Inherit Scene"
#~ msgstr "Eredita Scena"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index e2db7c16d1..1a7f3d5bfe 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -18,18 +18,21 @@
# sugusan <sugusan.development@gmail.com>, 2018.
# Nathan Lovato <nathan.lovato.art@gmail.com>, 2018.
# nyanode <akaruooyagi@yahoo.co.jp>, 2018.
+# nitenook <admin@alterbaum.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-09 09:33+0000\n"
-"Last-Translator: nyanode <akaruooyagi@yahoo.co.jp>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
+"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
"Language: ja\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.2.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -52,11 +55,11 @@ msgstr "インスタンス㌠null ã®ãŸã‚ã€self ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "æ¼”ç®—å­ ï¼…s 〠%s 〠%s ã«å¯¾ã™ã‚‹å€¤ãŒç„¡åŠ¹ã§ã™ã€‚"
+msgstr "æ¼”ç®—å­ %s 〠%s 〠%s ã«å¯¾ã™ã‚‹å€¤ãŒç„¡åŠ¹ã§ã™ã€‚"
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr "基本型 ï¼…s ã®åž‹ ï¼…s ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒç„¡åŠ¹ã§ã™"
+msgstr "基本型 %s ã®åž‹ %s ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒç„¡åŠ¹ã§ã™"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
@@ -68,7 +71,7 @@ msgstr "'%s' ã®å¼•æ•°ã¯ç„¡åŠ¹ã§ã™"
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr "'ï¼…s' ã¸ã®å‘¼ã³å‡ºã—:"
+msgstr "'%s' ã¸ã®å‘¼ã³å‡ºã—:"
#: editor/animation_bezier_editor.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -194,7 +197,7 @@ msgstr "ã“ã®ãƒˆãƒ©ãƒƒã‚¯ã‚’除去ã™ã‚‹ã€‚"
#: editor/animation_track_editor.cpp
msgid "Time (s): "
-msgstr "時間: "
+msgstr "時間 (秒): "
#: editor/animation_track_editor.cpp
msgid "Continuous"
@@ -262,7 +265,6 @@ msgstr "%d æ–°è¦ãƒˆãƒ©ãƒƒã‚¯ã‚’作æˆã—ã€ã‚­ãƒ¼ã‚’挿入ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -413,12 +415,10 @@ msgid "Delete Selection"
msgstr "é¸æŠžç¯„囲を削除"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "次ã®ã‚¹ãƒ†ãƒƒãƒ—ã¸"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "å‰ã®ã‚¹ãƒ†ãƒƒãƒ—ã¸"
@@ -542,15 +542,19 @@ msgstr "ã™ã¹ã¦ç½®æ›"
msgid "Selection Only"
msgstr "é¸æŠžç¯„囲ã®ã¿"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ズームイン"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "ズームアウト"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "ズームをリセット"
@@ -559,8 +563,8 @@ msgid "Warnings:"
msgstr "警告:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "ズーム:"
+msgid "Font Size:"
+msgstr "フォントサイズ:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -579,8 +583,8 @@ msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
-"対象メソッドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ï¼ã€€æœ‰åŠ¹ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’指定ã™ã‚‹ã‹ã€å¯¾è±¡ãƒŽãƒ¼ãƒ‰ã«ã‚¹ã‚¯"
-"リプトを添付ã—ã¦ãã ã•ã„。"
+"対象メソッドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ï¼æœ‰åŠ¹ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’指定ã™ã‚‹ã‹ã€å¯¾è±¡ãƒŽãƒ¼ãƒ‰ã«ã‚¹ã‚¯ãƒª"
+"プトを添付ã—ã¦ãã ã•ã„。"
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
@@ -649,7 +653,7 @@ msgstr "'%s' ã‚’ '%s' ã«æŽ¥ç¶š"
#: editor/connections_dialog.cpp
msgid "Disconnect '%s' from '%s'"
-msgstr "'%s' ã‹ã‚‰ '%s' を切断"
+msgstr "'%s' ã‚’ '%s' ã‹ã‚‰åˆ‡æ–­"
#: editor/connections_dialog.cpp
msgid "Disconnect all from signal: '%s'"
@@ -673,9 +677,8 @@ msgid "Edit Connection: "
msgstr "接続を編集 "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "ã“ã®ä¿¡å·ã‹ã‚‰å…¨ã¦ã®æŽ¥ç¶šã‚’除去ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ"
+msgstr "ä¿¡å· %s ã‹ã‚‰å…¨ã¦ã®æŽ¥ç¶šã‚’除去ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -720,8 +723,8 @@ msgid "Recent:"
msgstr "最近:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "検索:"
@@ -772,8 +775,7 @@ msgid "Resource"
msgstr "リソース"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "パス"
@@ -829,13 +831,12 @@ msgid "Error loading:"
msgstr "読込ã¿ã‚¨ãƒ©ãƒ¼:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "ä¾å­˜é–¢ä¿‚ãŒç¢ºèªã§ããšã€ã‚·ãƒ¼ãƒ³ã‚’読込ã‚ã¾ã›ã‚“:"
+msgstr "ä¾å­˜é–¢ä¿‚ãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚·ãƒ¼ãƒ³ã‚’読込ã‚ã¾ã›ã‚“:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
-msgstr "ã¨ã‚‚ã‹ãé–‹ã"
+msgstr "ã¨ã«ã‹ãé–‹ã"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
@@ -1117,7 +1118,7 @@ msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr "'res://default_bus_layout.tres' ファイルãŒã‚ã‚Šã¾ã›ã‚“ï¼"
+msgstr "'res://default_bus_layout.tres' ファイルãŒã‚ã‚Šã¾ã›ã‚“。"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -1231,8 +1232,7 @@ msgid "Node Name:"
msgstr "ノードå:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "åå‰"
@@ -1310,22 +1310,19 @@ msgid "File Exists, Overwrite?"
msgstr "ファイルãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "ã™ã¹ã¦é¸æŠž"
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "パスをコピー"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§é–‹ã"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§è¡¨ç¤º"
@@ -1510,14 +1507,12 @@ msgid "Constants:"
msgstr "定数:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "説明"
+msgstr "クラスã®èª¬æ˜Ž"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "説明:"
+msgstr "クラスã®èª¬æ˜Žï¼š"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1651,7 +1646,7 @@ msgstr "出力をクリア"
#: editor/editor_node.cpp
msgid "Project export failed with error code %d."
-msgstr "エラーコード %d ã«ã‚ˆã‚Šã€ãƒ—ロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+msgstr "プロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãŒã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ %d ã§å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
@@ -1681,8 +1676,7 @@ msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Can't open '%s'. The file could have been moved or deleted."
msgstr ""
-"'ï¼…s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。ファイルãŒç§»å‹•ã¾ãŸã¯å‰Šé™¤ã•ã‚ŒãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾"
-"ã™ã€‚"
+"'%s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。ファイルãŒç§»å‹•ã¾ãŸã¯å‰Šé™¤ã•ã‚ŒãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid "Error while parsing '%s'."
@@ -1718,6 +1712,12 @@ msgstr "ã“ã®æ“作ã¯ã€ãƒ„リー㮠root ãªã—ã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1726,7 +1726,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "é–‹ã„ã¦ã„るシーンを上書ãã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1980,7 +1980,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
-msgstr "パス 'ï¼…s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。"
+msgstr "パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。"
#: editor/editor_node.cpp
#, fuzzy
@@ -2009,7 +2009,7 @@ msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
-"シーン 'ï¼…s' ã¯è‡ªå‹•çš„ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•ã‚ŒãŸã®ã§ã€å¤‰æ›´ã§ãã¾ã›ã‚“。\n"
+"シーン '%s' ã¯è‡ªå‹•çš„ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•ã‚ŒãŸã®ã§ã€å¤‰æ›´ã§ãã¾ã›ã‚“。\n"
"変更ã™ã‚‹ãŸã‚ã«ã¯ã€æ–°ãŸã«ç¶™æ‰¿ã•ã‚ŒãŸã‚·ãƒ¼ãƒ³ã‚’作æˆã—ã¦ãã ã•ã„。"
#: editor/editor_node.cpp
@@ -2062,7 +2062,7 @@ msgstr "シーンタブを切替ãˆ"
#: editor/editor_node.cpp
msgid "%d more files or folders"
-msgstr "ï¼…d 以上ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ãƒ•ã‚©ãƒ«ãƒ€"
+msgstr "%d 以上ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ãƒ•ã‚©ãƒ«ãƒ€"
#: editor/editor_node.cpp
msgid "%d more folders"
@@ -2078,11 +2078,11 @@ msgstr "ドックã®ä½ç½®"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr "よã見知らãšãƒ¢ãƒ¼ãƒ‰"
+msgstr "集中モード"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
-msgstr "よã見知らãšãƒ¢ãƒ¼ãƒ‰ã‚’切替ãˆã‚‹ã€‚"
+msgstr "集中モードを切替ãˆã‚‹ã€‚"
#: editor/editor_node.cpp
msgid "Add a new scene."
@@ -2156,12 +2156,12 @@ msgstr "タイルセット..."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr "アンドゥ"
+msgstr "å…ƒã«æˆ»ã™"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
-msgstr "リドゥ"
+msgstr "ã‚„ã‚Šç›´ã™"
#: editor/editor_node.cpp
msgid "Revert Scene"
@@ -2183,7 +2183,7 @@ msgstr "プロジェクトã®è¨­å®š"
msgid "Export"
msgstr "エクスãƒãƒ¼ãƒˆ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ツール"
@@ -2612,6 +2612,12 @@ msgstr "アサイン.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2628,8 +2634,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "ビューãƒãƒ¼ãƒˆã‚’é¸ã¶"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト"
@@ -2653,7 +2658,7 @@ msgstr "ユニーク化"
#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
-msgstr "貼付ã‘"
+msgstr "貼り付ã‘"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Convert To %s"
@@ -2848,7 +2853,7 @@ msgid ""
"found at '%s'."
msgstr ""
"テンプレートã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ å•é¡Œã®ãƒ†ãƒ³ãƒ—レートã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–㯠"
-"'ï¼…s' ã«ã‚ã‚Šã¾ã™ã€‚"
+"'%s' ã«ã‚ã‚Šã¾ã™ã€‚"
#: editor/export_template_manager.cpp
msgid "Error requesting url: "
@@ -2898,7 +2903,7 @@ msgstr "接続エラー"
#: editor/export_template_manager.cpp
msgid "SSL Handshake Error"
-msgstr "SS ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚¨ãƒ©ãƒ¼"
+msgstr "SSL ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚¨ãƒ©ãƒ¼"
#: editor/export_template_manager.cpp
msgid "Current Version:"
@@ -3033,9 +3038,8 @@ msgid "Add to favorites"
msgstr "ãŠæ°—ã«å…¥ã‚Š:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "グループã‹ã‚‰é™¤åŽ»"
+msgstr "ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰å‰Šé™¤"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3057,7 +3061,7 @@ msgstr "複製..."
msgid "Move To..."
msgstr "移動..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト..."
@@ -3189,7 +3193,8 @@ msgid "Group name already exists."
msgstr "グループåãŒæ—¢ã«ã‚ã‚Šã¾ã™ã€‚"
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "無効ãªã‚°ãƒ«ãƒ¼ãƒ—åã§ã™ã€‚"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3437,14 +3442,14 @@ msgid "Activate now?"
msgstr "ã„ã¾ã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "ãƒãƒªã‚´ãƒ³ã‚’作æˆ"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3452,25 +3457,27 @@ msgid "Insert Point"
msgstr "ãƒã‚¤ãƒ³ãƒˆæŒ¿å…¥"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集(点を除去)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "ãƒãƒªã‚´ãƒ³ã¨ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’作æˆ"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "点を作æˆã™ã‚‹ã€‚"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"既存ã®ãƒãƒªã‚´ãƒ³ã‚’編集:\n"
"左クリック: 点を移動。\n"
@@ -3478,8 +3485,9 @@ msgstr ""
"å³ã‚¯ãƒªãƒƒã‚¯: 点を消ã™ã€‚"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "点を削除"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "点を消ã™ã€‚"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3526,15 +3534,6 @@ msgstr "点をé¸æŠžã—ã¦ç§»å‹•ã—ã€å³ã‚¯ãƒªãƒƒã‚¯ã§ç‚¹ã‚’作æˆã—ã¾ã™ã€‚
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "点を作æˆã™ã‚‹ã€‚"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "点を消ã™ã€‚"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "点"
@@ -3613,7 +3612,6 @@ msgstr ""
"å¾—ã§ãã¾ã›ã‚“。"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "ノードを追加.."
@@ -3863,7 +3861,7 @@ msgstr "サブトランジションã«ã¯ã€é–‹å§‹ãƒŽãƒ¼ãƒ‰ã¨çµ‚了ノードãŒ
#: editor/plugins/animation_state_machine_editor.cpp
msgid "No playback resource set at path: %s."
-msgstr "パス( ï¼…s )ã«å†ç”Ÿãƒªã‚½ãƒ¼ã‚¹ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
+msgstr "パス( %s )ã«å†ç”Ÿãƒªã‚½ãƒ¼ã‚¹ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
#: editor/plugins/animation_state_machine_editor.cpp
msgid ""
@@ -4153,7 +4151,7 @@ msgstr "ã™ã¹ã¦"
msgid "Plugins"
msgstr "プラグイン"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "並ã¹æ›¿ãˆ:"
@@ -4310,21 +4308,19 @@ msgid "Paste Pose"
msgstr "ãƒãƒ¼ã‚ºã‚’貼り付ã‘ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "ズームアウト"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "ズームをリセット"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "ズームイン"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
@@ -4341,7 +4337,7 @@ msgstr "Alt+ドラッグ:移動"
#, fuzzy
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
msgstr ""
-"vキーを押ã™ã¨ãƒ”ボットã®å¤‰æ›´ã€'Shift+v' ã§ãƒ”ボットをドラッグ(移動中ã§ã‚‚)"
+"vキーを押ã™ã¨ãƒ”ボットã®å¤‰æ›´ã€'Shift+v' ã§ãƒ”ボットをドラッグ(移動中ã§ã‚‚)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4626,8 +4622,17 @@ msgstr ""
"ドラッグ&ドロップ + Alt : ノードã®ã‚¿ã‚¤ãƒ—を変更ã™ã‚‹"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "3Dãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集(点を除去)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
#, fuzzy
@@ -4635,9 +4640,8 @@ msgid "Set Handle"
msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
#: editor/plugins/cpu_particles_editor_plugin.cpp
-#, fuzzy
msgid "CPUParticles"
-msgstr "頂点"
+msgstr "CPUパーティクル"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -4694,7 +4698,7 @@ msgstr "点を追加"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’削除"
+msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
@@ -4740,40 +4744,10 @@ msgid "Item List Editor"
msgstr "アイテムリストã®ã‚¨ãƒ‡ã‚£ã‚¿"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"ã“ã®ãƒŽãƒ¼ãƒ‰ã«OccluderPolygon2DリソースãŒã‚ã‚Šã¾ã›ã‚“。\n"
-"作æˆã—ã¦ã€å‰²ã‚Šå½“ã¦ã¾ã™ã‹ ?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#, fuzzy
msgid "Create Occluder Polygon"
msgstr "オクルージョンを生ã˜ã‚‹ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create a new polygon from scratch."
-msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "既存ã®ãƒãƒªã‚´ãƒ³ã‚’編集:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: 点を移動ã™ã‚‹ã€‚"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+マウス左ボタン: セグメントを分割"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "å³ã‚¯ãƒªãƒƒã‚¯: 点を消ã™ã€‚"
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
msgid "Mesh is empty!"
@@ -5083,9 +5057,8 @@ msgstr "発光(Emission)マスクをクリア"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Convert to CPUParticles"
-msgstr "大文字ã«å¤‰æ›"
+msgstr "CPUパーティクルã«å¤‰æ›"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -5206,6 +5179,11 @@ msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’曲線ã«è¿½åŠ "
#: editor/plugins/path_2d_editor_plugin.cpp
#, fuzzy
+msgid "Split Curve"
+msgstr "曲線を閉ã˜ã‚‹"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move Point in Curve"
msgstr "曲線ã®ãƒã‚¤ãƒ³ãƒˆã‚’移動"
@@ -5236,6 +5214,11 @@ msgid "Click: Add Point"
msgstr "クリック: 点を追加"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "分割ã™ã‚‹(曲線を)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "å³ã‚¯ãƒªãƒƒã‚¯: 点を削除"
@@ -5251,12 +5234,6 @@ msgstr "点を空ãスペースã«è¿½åŠ "
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
-msgid "Split Segment (in curve)"
-msgstr "分割ã™ã‚‹(曲線を)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "点を削除"
@@ -5318,6 +5295,11 @@ msgstr "曲線ã®Out-ãƒãƒ³ãƒ‰ãƒ«ã‚’除去"
msgid "Remove In-Control Point"
msgstr "曲線ã®In-ãƒãƒ³ãƒ‰ãƒ«ã‚’除去"
+#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
+msgid "Split Segment (in curve)"
+msgstr "分割ã™ã‚‹(曲線を)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5330,10 +5312,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "ボーンを表示ã™ã‚‹"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "UVマップを生æˆ"
@@ -5374,17 +5362,27 @@ msgid "Transform UV Map"
msgstr "UVマップをトランスフォーム"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "トランスフォーム"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "ãƒãƒªã‚´ãƒ³ï¼’Dã®UVエディタ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Polygon 2D UV Editor"
msgstr "ãƒãƒªã‚´ãƒ³ï¼’Dã®UVエディタ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV"
-msgstr ""
+msgstr "UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -5403,12 +5401,7 @@ msgstr "ボーンを生æˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Move Point"
+msgid "Move Points"
msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’移動"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5442,25 +5435,25 @@ msgid "Scale Polygon"
msgstr "ãƒãƒªã‚´ãƒ³ã®ç¸®å°ºã‚’変更"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "設定項目を設定ã—ã¦ãã ã•ã„!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
-msgstr ""
+msgstr "åŠå¾„:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -5526,20 +5519,17 @@ msgid "ERROR: Couldn't load resource!"
msgstr "エラー:リソースを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
msgid "Add Resource"
msgstr "リソースを追加"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
msgid "Rename Resource"
-msgstr "リソースã®åå‰ã‚’変ãˆã‚‹"
+msgstr "リソースåを変更"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Delete Resource"
-msgstr "リソースを消去ã™ã‚‹"
+msgstr "リソースを削除"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#, fuzzy
@@ -5547,9 +5537,8 @@ msgid "Resource clipboard is empty!"
msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードã¯ç©ºã§ã™!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
msgid "Paste Resource"
-msgstr "リソースを張り付ã‘ã‚‹"
+msgstr "リソースã®å¼µã‚Šä»˜ã‘"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_editor.cpp
@@ -5593,11 +5582,8 @@ msgid "Clear Recent Files"
msgstr "最近開ã„ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®è¨˜éŒ²ã‚’クリア"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close and save changes?"
-msgstr ""
-"変更をä¿å­˜ã—ã¦é–‰ã˜ã¾ã™ã‹?\n"
-"\""
+msgstr "変更をä¿å­˜ã—ã¦é–‰ã˜ã¾ã™ã‹?"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5621,20 +5607,22 @@ msgstr "タイルセットã®ä¿å­˜ã‚¨ãƒ©ãƒ¼!"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr "テーマをä¿å­˜ã™ã‚‹é€”中ã§ã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "ä¿å­˜ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr "テーマをインãƒãƒ¼ãƒˆä¸­ã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "インãƒãƒ¼ãƒˆã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
@@ -5657,6 +5645,15 @@ msgid "Import Theme"
msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Error while saving theme"
+msgstr "テーマをä¿å­˜ã™ã‚‹é€”中ã§ã®ã‚¨ãƒ©ãƒ¼"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "ä¿å­˜ã‚¨ãƒ©ãƒ¼"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "テーマをåå‰ã‚’ã¤ã‘ã¦ä¿å­˜..."
@@ -5700,8 +5697,8 @@ msgstr "ファイル"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "ビューファイル:"
+msgid "Open..."
+msgstr "é–‹ã"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5732,6 +5729,11 @@ msgstr "テーマ"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
+msgid "Import Theme..."
+msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Reload Theme"
msgstr "テーマをå†èª­è¾¼"
@@ -5740,10 +5742,6 @@ msgid "Save Theme"
msgstr "テーマをä¿å­˜"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "テーマã«åå‰ã‚’付ã‘ã¦ä¿å­˜"
-
-#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Close Docs"
msgstr "é–‰ã˜ã‚‹"
@@ -5813,7 +5811,7 @@ msgstr "ç›´å‰ã®ã€Œç·¨é›†ã—ãŸæ–‡æ›¸ã€ã¸ç§»å‹•."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to next edited document."
-msgstr "次ã®ã®ã€Œç·¨é›†ã—ãŸæ–‡æ›¸ã€ã¸ç§»å‹•."
+msgstr "次ã®ã€Œç·¨é›†ã—ãŸæ–‡æ›¸ã€ã¸ç§»å‹•."
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5860,6 +5858,10 @@ msgstr ""
msgid "Go to Function"
msgstr "関数~ã«ç§»å‹•..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "ファイルシステムã®ãƒªã‚½ãƒ¼ã‚¹ã®ã¿ãƒ‰ãƒ­ãƒƒãƒ—ã§ãã¾ã™."
@@ -5893,10 +5895,6 @@ msgstr "先頭を大文字ã«"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6116,7 +6114,7 @@ msgstr "æç”»ã•ã‚ŒãŸã‚ªãƒ–ジェクト"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Material Changes"
-msgstr "ç´ æã®å¤‰æ›´"
+msgstr "マテリアルã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Shader Changes"
@@ -6128,7 +6126,7 @@ msgstr "サーフェースã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr "ドローコール(Daw call)"
+msgstr "ドローコール"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Vertices"
@@ -6653,12 +6651,18 @@ msgid "Set Region Rect"
msgstr "テクスãƒãƒ£ã€€ãƒªãƒ¼ã‚¸ãƒ§ãƒ³"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Snapモード:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "None"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6915,12 +6919,12 @@ msgstr "トランスフォーム"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "シーンã‹ã‚‰ã®ãƒŽãƒ¼ãƒ‰"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "パスã®ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6932,13 +6936,34 @@ msgid "Merge from Scene"
msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "アニメーションを貼付ã‘"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "点を消ã™ã€‚"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6970,16 +6995,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "点を削除"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
@@ -6998,12 +7034,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "タイルセット..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -7023,6 +7066,11 @@ msgstr "å³å´é¢"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "ノードを追加.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "シェーダー"
@@ -7066,8 +7114,8 @@ msgstr "追加..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "プロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+msgid "Export Path"
+msgstr "エクスãƒãƒ¼ãƒˆãƒ‘ス:"
#: editor/project_export.cpp
msgid "Resources"
@@ -7145,9 +7193,8 @@ msgid "Export mode?"
msgstr "エクスãƒãƒ¼ãƒˆã®ãƒ¢ãƒ¼ãƒ‰:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "エクスãƒãƒ¼ãƒˆ"
+msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
#, fuzzy
@@ -7165,18 +7212,18 @@ msgid "The path does not exist."
msgstr "ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid '.zip' project file, does not contain a 'project.godot' file."
-msgstr "'project.godot'ãŒãªã„フォルダをé¸æŠžã—ã¦ãã ã•ã„."
+msgstr ""
+"無効㪠'.zip' プロジェクトファイルã§ã™ã€‚'project.godot' ファイルãŒå«ã¾ã‚Œã¦ã„"
+"ã¾ã›ã‚“。"
#: editor/project_manager.cpp
msgid "Please choose an empty folder."
msgstr "空ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Please choose a 'project.godot' or '.zip' file."
-msgstr "'project.godot' ファイルをé¸æŠžã—ã¦ãã ã•ã„."
+msgstr "'project.godot' ã‚‚ã—ã㯠'.zip' ファイルをé¸æŠžã—ã¦ãã ã•ã„."
#: editor/project_manager.cpp
msgid "Directory already contains a Godot project."
@@ -7187,9 +7234,8 @@ msgid "Imported Project"
msgstr "インãƒãƒ¼ãƒˆã•ã‚ŒãŸãƒ—ロジェクト"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid Project Name."
-msgstr "プロジェクトå:"
+msgstr "無効ãªãƒ—ロジェクトåã§ã™ã€‚"
#: editor/project_manager.cpp
#, fuzzy
@@ -7261,9 +7307,8 @@ msgid "Install Project:"
msgstr "プロジェクトをインストール:"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Install & Edit"
-msgstr "インストール"
+msgstr "インストールã—ã¦ç·¨é›†"
#: editor/project_manager.cpp
msgid "Project Name:"
@@ -7284,7 +7329,7 @@ msgstr "プロジェクトパス:"
#: editor/project_manager.cpp
msgid "Browse"
-msgstr "å‚照…"
+msgstr "å‚ç…§"
#: editor/project_manager.cpp
msgid "Unnamed Project"
@@ -7383,9 +7428,8 @@ msgstr ""
"アセットライブラリã§å…¬å¼ã®ã‚µãƒ³ãƒ—ルプロジェクトをãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Key "
-msgstr "キー.. "
+msgstr "キー "
#: editor/project_settings_editor.cpp
#, fuzzy
@@ -7426,9 +7470,8 @@ msgid "Add Input Action Event"
msgstr "入力アクションイベントを追加"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "All Devices"
-msgstr "デãƒã‚¤ã‚¹"
+msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹"
#: editor/project_settings_editor.cpp
msgid "Device"
@@ -7578,6 +7621,8 @@ msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'."
msgstr ""
+"無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™ã€‚空もã—ãã¯'/', ':', '=', '\\' ã‚„ '\"'ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§"
+"ãã¾ã›ã‚“。"
#: editor/project_settings_editor.cpp
#, fuzzy
@@ -7729,14 +7774,12 @@ msgid "Show only selected locales"
msgstr "é¸æŠžã—ãŸãƒ­ã‚±ãƒ¼ãƒ«ã®ã¿è¡¨ç¤º"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Filter mode:"
-msgstr "フィルター"
+msgstr "フィルターモード:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Locales:"
-msgstr "ロケール"
+msgstr "ロケール:"
#: editor/project_settings_editor.cpp
msgid "AutoLoad"
@@ -7840,9 +7883,8 @@ msgid "Substitute"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node name"
-msgstr "ノードã®åå‰:"
+msgstr "ノードå"
#: editor/rename_dialog.cpp
msgid "Node's parent name, if available"
@@ -7854,9 +7896,8 @@ msgid "Node type"
msgstr "ノードタイプを探ã™"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Current scene name"
-msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³"
+msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³å"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -7882,9 +7923,8 @@ msgid "Initial value for the counter"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Step"
-msgstr "ステップ:"
+msgstr "ステップ"
#: editor/rename_dialog.cpp
msgid "Amount by which counter is incremented for each node"
@@ -7906,9 +7946,8 @@ msgid "Regular Expressions"
msgstr "å¼ã‚’変更"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Post-Process"
-msgstr "後処ç†ã‚¹ã‚¯ãƒªãƒ—ト:"
+msgstr "ãƒã‚¹ãƒˆãƒ—ロセス"
#: editor/rename_dialog.cpp
msgid "Keep"
@@ -7937,9 +7976,8 @@ msgid "To Uppercase"
msgstr "大文字"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Reset"
-msgstr "ズームをリセット"
+msgstr "リセット"
#: editor/rename_dialog.cpp
msgid "Error"
@@ -8082,19 +8120,16 @@ msgid "Create Root Node:"
msgstr "ノードを生æˆ"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "2D Scene"
-msgstr "シーン"
+msgstr "2D シーン"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "3D Scene"
-msgstr "シーン"
+msgstr "3D シーン"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "User Interface"
-msgstr "継承をクリアã™ã‚‹"
+msgstr "ユーザーインターフェース"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -8111,9 +8146,8 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ãŒç¶™æ‰¿ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’処ç†ã§ãã¾ã›ã‚“!"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Attach Script"
-msgstr "スクリプトを付与"
+msgstr "スクリプトをアタッãƒ"
#: editor/scene_tree_dock.cpp
msgid "Remove Node(s)"
@@ -8137,9 +8171,8 @@ msgid "Error duplicating scene to save it."
msgstr "ä¿å­˜ã®ãŸã‚シーンを複製ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources"
-msgstr "サブリソース:"
+msgstr "サブリソース"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -8165,14 +8198,12 @@ msgid "Change Type"
msgstr "型(type)を変更"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "フォルダを作æˆ"
+msgstr "スクリプトを拡張"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make Scene Root"
-msgstr "有æ„義ã«!"
+msgstr "ルートシーンを作æˆ"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -8189,9 +8220,8 @@ msgid "Copy Node Path"
msgstr "ノードã®ãƒ‘スをコピー"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Delete (No Confirm)"
-msgstr "確èªã—ã¦ãã ã•ã„。"
+msgstr "削除 (確èªãªã—)"
#: editor/scene_tree_dock.cpp
msgid "Add/Create a New Node"
@@ -8217,9 +8247,8 @@ msgid "Clear a script for the selected node."
msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã®ã‚¹ã‚¯ãƒªãƒ—トをクリア"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Remote"
-msgstr "削除"
+msgstr "リモート"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -8269,18 +8298,16 @@ msgstr ""
"クリックã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‰ãƒƒã‚¯ã‚’表示ã—ã¦ãã ã•ã„."
#: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp
-#, fuzzy
msgid "Open Script"
-msgstr "フォルダを作æˆ"
+msgstr "スクリプトを開ã"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid ""
"Node is locked.\n"
"Click to unlock it."
msgstr ""
-"ノードã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™.\n"
-"クリックã—ã¦ãƒ­ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„"
+"ノードã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+"クリックã—ã¦ãƒ­ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„。"
#: editor/scene_tree_editor.cpp
#, fuzzy
@@ -8324,14 +8351,12 @@ msgid "Select a Node"
msgstr "ノードをé¸æŠž"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
+msgstr "テンプレート %s 読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "エラー - ファイルシステムã«ã‚¹ã‚¯ãƒªãƒ—トを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -8352,9 +8377,8 @@ msgid "Path is empty"
msgstr "パスãŒã‚ã‚Šã¾ã›ã‚“"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "ä¿å­˜ã™ã‚‹ãƒ‘スãŒã‚ã‚Šã¾ã›ã‚“!"
+msgstr "ファイルåãŒç©ºã§ã™"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -8384,9 +8408,8 @@ msgid "Wrong extension chosen"
msgstr "æ‹¡å¼µå­ãŒèª¤ã£ã¦ã„ã¾ã™"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "無効ãªãƒ•ã‚©ãƒ³ãƒˆ サイズã§ã™ã€‚"
+msgstr "無効ãªãƒ‘ス"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
@@ -8411,16 +8434,14 @@ msgid "Built-in script (into scene file)"
msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト(シーンファイルã®ï¼‰"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "フォルダを作æˆ"
+msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—トファイルを作æˆ"
#: editor/script_create_dialog.cpp
msgid "Load existing script file"
msgstr "既存ã®ã‚¹ã‚¯ãƒªãƒ—トファイルを読ã¿è¾¼ã‚€"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Language"
msgstr "言語"
@@ -8433,9 +8454,8 @@ msgid "Class Name"
msgstr "クラスå"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgstr "テンプレート"
#: editor/script_create_dialog.cpp
msgid "Built-in Script"
@@ -8447,18 +8467,16 @@ msgid "Attach Node Script"
msgstr "ノードã«ã‚¹ã‚¯ãƒªãƒ—トを添付ã™ã‚‹"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Remote "
-msgstr "削除"
+msgstr "リモート "
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
msgstr "ãƒã‚¤ãƒˆ:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "スタックフレーム"
+msgstr "スタックトレース"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8473,9 +8491,8 @@ msgid "Child Process Connected"
msgstr "å­ãƒ—ロセス接続"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Copy Error"
-msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+msgstr "コピーエラー"
#: editor/script_editor_debugger.cpp
#, fuzzy
@@ -8670,9 +8687,8 @@ msgid "Platform:"
msgstr ""
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "プラットフォームã¸ã‚³ãƒ”ー..."
+msgstr "プラットフォーム"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -8689,14 +8705,12 @@ msgid "GDNativeLibrary"
msgstr "メッシュライブラリ..."
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
msgid "Library"
-msgstr "メッシュライブラリ..."
+msgstr "ライブラリ"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
msgid "Status"
-msgstr "ステータス:"
+msgstr "ステータス"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Libraries: "
@@ -8707,7 +8721,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "ステップ引数ã¯ã‚¼ãƒ­ã§ã™ï¼"
#: modules/gdscript/gdscript_functions.cpp
@@ -8907,51 +8922,44 @@ msgid "Failed to create solution."
msgstr "アウトラインを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
#: modules/mono/editor/godotsharp_editor.cpp
-#, fuzzy
msgid "Failed to save solution."
-msgstr "リソース読ã¿è¾¼ã¿å¤±æ•—"
+msgstr "ソリューションã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: modules/mono/editor/godotsharp_editor.cpp
-#, fuzzy
msgid "Done"
-msgstr "完了!"
+msgstr "完了"
#: modules/mono/editor/godotsharp_editor.cpp
-#, fuzzy
msgid "Failed to create C# project."
-msgstr "リソース読ã¿è¾¼ã¿å¤±æ•—"
+msgstr "C#プロジェクトã®ç”Ÿæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: modules/mono/editor/godotsharp_editor.cpp
msgid "Mono"
-msgstr "モノラル音声"
+msgstr "Mono"
#: modules/mono/editor/godotsharp_editor.cpp
msgid "About C# support"
msgstr ""
#: modules/mono/editor/godotsharp_editor.cpp
-#, fuzzy
msgid "Create C# solution"
-msgstr "アウトラインを生æˆ"
+msgstr "C#ソリューションを生æˆ"
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "ビルド"
#: modules/mono/editor/mono_bottom_panel.cpp
-#, fuzzy
msgid "Build Project"
-msgstr "プロジェクト"
+msgstr "プロジェクトをビルド"
#: modules/mono/editor/mono_bottom_panel.cpp
-#, fuzzy
msgid "Warnings"
msgstr "警告"
#: modules/mono/editor/mono_bottom_panel.cpp
-#, fuzzy
msgid "View log"
-msgstr "ビューファイル:"
+msgstr "ログを表示"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -9101,14 +9109,12 @@ msgid "Name already in use by another func/var/signal:"
msgstr "ä»–ã®é–¢æ•°/変数/シグナルã«ã‚ˆã‚Šæ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã‚‹åå‰ã§ã™:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Rename Function"
-msgstr "関数を作æˆ"
+msgstr "関数åを変更"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Rename Variable"
-msgstr "変数ã®åå‰ã‚’変ãˆã‚‹"
+msgstr "変数åを変更"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Signal"
@@ -9119,24 +9125,20 @@ msgid "Add Function"
msgstr "関数を追加"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Variable"
-msgstr "変数を加ãˆã‚‹"
+msgstr "変数を追加"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Signal"
-msgstr "signalを加ãˆã‚‹"
+msgstr "ä¿¡å·ã‚’追加"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Expression"
msgstr "å¼ã‚’変更"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Node"
-msgstr "ノードを加ãˆã‚‹"
+msgstr "ノードを追加"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -9205,9 +9207,8 @@ msgid "Change Base Type"
msgstr "型(type)を変更"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "ノードを除去"
+msgstr "ノードを移動"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -9244,9 +9245,8 @@ msgid "Can't copy the function node."
msgstr "'..'を処ç†ã§ãã¾ã›ã‚“"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードã¯ç©ºã§ã™!"
+msgstr "クリップボードã¯ç©ºã§ã™!"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -9254,9 +9254,8 @@ msgid "Paste VisualScript Nodes"
msgstr "ノードを貼り付ã‘:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove Function"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgstr "関数を除去"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -9269,9 +9268,8 @@ msgid "Editing Variable:"
msgstr "変数を編集中:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove Signal"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgstr "ä¿¡å·ã‚’除去"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -9297,12 +9295,10 @@ msgid "Select or create a function to edit graph"
msgstr "グラフを編集ã™ã‚‹é–¢æ•°ã‚’ã€é¸æŠžã™ã‚‹ã‹ç”Ÿæˆã™ã‚‹"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal Arguments:"
msgstr "シグナルã®å¼•æ•°ã‚’編集:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable:"
msgstr "変数を編集:"
@@ -9315,7 +9311,6 @@ msgid "Find Node Type"
msgstr "ノードタイプを探ã™"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Copy Nodes"
msgstr "ノードをコピー"
@@ -9328,9 +9323,8 @@ msgid "Paste Nodes"
msgstr "ノードを貼り付ã‘:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Member"
-msgstr "メンãƒãƒ¼:"
+msgstr "メンãƒãƒ¼ã‚’編集"
#: modules/visual_script/visual_script_flow_control.cpp
#, fuzzy
@@ -9368,14 +9362,12 @@ msgid "Invalid index property name '%s' in node %s."
msgstr "ノード%sã®ä¸æ­£ãªã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®ãƒ—ロパティå'%s' ."
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid ": Invalid argument of type: "
-msgstr ":ä¸æ­£ãªå¼•æ•°ã§ã™.引数ã®åž‹=: "
+msgstr ":無効ãªå¼•æ•° 引数ã®åž‹: "
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid ": Invalid arguments: "
-msgstr ":ä¸æ­£ãªå¼•æ•°: "
+msgstr ": 無効ãªå¼•æ•°: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -9415,7 +9407,6 @@ msgid "Set %s"
msgstr ""
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Run in Browser"
msgstr "ブラウザã§å®Ÿè¡Œ"
@@ -9425,9 +9416,8 @@ msgid "Run exported HTML in the system's default browser."
msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLファイルを既定ã®ãƒ–ラウザã§å®Ÿè¡Œ."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:"
-msgstr "ファイルã«æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸ:\n"
+msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
#, fuzzy
@@ -9710,7 +9700,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr "æ画パスã®ãŸã‚ã®ãƒ¡ãƒƒã‚·ãƒ¥ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ã®ã§è¦‹ãˆã¾ã›ã‚“"
#: scene/3d/cpu_particles.cpp
@@ -9763,7 +9753,9 @@ msgstr ""
"PathFollow2D ã¯ã€Path2D ノードã®å­ã¨ã—ã¦è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿å‹•ä½œã—ã¾ã™ã€‚"
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9793,10 +9785,13 @@ msgstr ""
"セット) ã”ã¨ã«è¨±å¯ã•ã‚Œã¾ã™ã€‚"
#: scene/3d/scenario_fx.cpp
+#, fuzzy
msgid ""
"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
"this environment's Background Mode to Canvas (for 2D scenes)."
msgstr ""
+"ã“ã®WorldEnvironmentã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸã€‚カメラを追加ã™ã‚‹ã‹(3Dシーンã®å ´åˆ)ã€ã“"
+"ã®Environmentã® Backgroundモード ã‚’ Canvas ã«è¨­å®šã—ã¾ã™(2Dシーンã®å ´åˆ)。"
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh"
@@ -9828,18 +9823,16 @@ msgid "On BlendTree node '%s', animation not found: '%s'"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Animation not found: '%s'"
-msgstr "アニメーションツール"
+msgstr "見ã¤ã‹ã‚‰ãªã„アニメーション: '%s'"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "エラー:アニメーションã®åå‰ãŒä¸æ­£ã§ã™!"
+msgstr "無効ãªã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³: '%s'。"
#: scene/animation/animation_tree.cpp
#, fuzzy
@@ -9864,6 +9857,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "アニメーションツリーã«å•é¡ŒãŒã‚ã‚Šã¾ã™."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -9882,6 +9879,10 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "確èª"
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9907,7 +9908,6 @@ msgstr ""
"イズを手動ã§è¨­å®šã—ã¦ãã ã•ã„。"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "(Other)"
msgstr "(ãã®ä»–)"
@@ -9949,19 +9949,12 @@ msgid "Invalid font size."
msgstr "無効ãªãƒ•ã‚©ãƒ³ãƒˆ サイズã§ã™ã€‚"
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Input"
-msgstr "入力を追加"
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<None>"
+msgstr "入力"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "ä¸æ­£ãªã‚½ãƒ¼ã‚¹!"
+msgstr "無効ãªã‚·ã‚§ãƒ¼ãƒ€ãƒ¼ã®ã‚½ãƒ¼ã‚¹ã§ã™ã€‚"
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -9975,6 +9968,56 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "ãƒãƒªã‚´ãƒ³ã‚’作æˆ"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’作æˆ"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "ズームアウト"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "ズームイン"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "3Dãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "ã“ã®ãƒŽãƒ¼ãƒ‰ã«OccluderPolygon2DリソースãŒã‚ã‚Šã¾ã›ã‚“。\n"
+#~ "作æˆã—ã¦ã€å‰²ã‚Šå½“ã¦ã¾ã™ã‹ ?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "既存ã®ãƒãƒªã‚´ãƒ³ã‚’編集:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: 点を移動ã™ã‚‹ã€‚"
+
+#, fuzzy
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+マウス左ボタン: セグメントを分割"
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "å³ã‚¯ãƒªãƒƒã‚¯: 点を消ã™ã€‚"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "ビューファイル:"
+
+#~ msgid "Save Theme As"
+#~ msgstr "テーマã«åå‰ã‚’付ã‘ã¦ä¿å­˜"
+
+#~ msgid "<None>"
+#~ msgstr "<None>"
+
+#~ msgid "Zoom:"
+#~ msgstr "ズーム:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "\" ã‹ã‚‰å…¨ã¦ã®æŽ¥ç¶šã‚’除去ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹"
@@ -10756,10 +10799,6 @@ msgstr ""
#~ msgstr "ソース フォント:"
#, fuzzy
-#~ msgid "Source Font Size:"
-#~ msgstr "ソース フォントサイズ:"
-
-#, fuzzy
#~ msgid "Dest Resource:"
#~ msgstr "é€ã‚Šå…ˆã®ãƒªã‚½ãƒ¼ã‚¹:"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 7e13731d6a..980c858552 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -7,15 +7,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-08-16 16:36+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: George Dzavashvili <dzavashviligeorge@gmail.com>\n"
"Language-Team: Georgian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ka/>\n"
"Language: ka\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -258,7 +260,6 @@ msgstr "áƒáƒ®áƒáƒšáƒ˜ %d თრექების შექმნრდრáƒ
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -532,15 +533,19 @@ msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ"
msgid "Selection Only"
msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მხáƒáƒšáƒáƒ“"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ზუმის გáƒáƒ–რდáƒ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ"
@@ -549,9 +554,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "ზუმის გáƒáƒ–რდáƒ"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -714,8 +718,8 @@ msgid "Recent:"
msgstr "ბáƒáƒšáƒ:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "ძებნáƒ:"
@@ -766,8 +770,7 @@ msgid "Resource"
msgstr "რესურსი"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "გზáƒ"
@@ -1226,8 +1229,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1693,6 +1695,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2090,7 +2098,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2114,7 +2122,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2526,6 +2534,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2542,8 +2556,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2959,7 +2972,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3088,8 +3101,9 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
-msgstr ""
+#, fuzzy
+msgid "Invalid group name."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: editor/groups_editor.cpp editor/node_dock.cpp
msgid "Groups"
@@ -3334,44 +3348,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "შექმნáƒ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "შექმნáƒ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "შექმნáƒ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3416,16 +3431,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "შექმნáƒ"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3502,7 +3507,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4040,7 +4044,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4188,21 +4192,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "ზუმის გáƒáƒ–რდáƒ"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4458,7 +4460,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4560,35 +4571,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4956,6 +4941,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4983,6 +4973,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4998,11 +4992,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5059,6 +5048,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5069,7 +5062,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5111,7 +5110,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5135,12 +5143,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon"
-msgstr "შექმნáƒ"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5168,19 +5171,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5319,20 +5322,24 @@ msgid "Error saving file!"
msgstr "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეცდáƒáƒ›áƒ”ბი!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეცდáƒáƒ›áƒ”ბი!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეცდáƒáƒ›áƒ:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "შეცდáƒáƒ›áƒ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის შეცდáƒáƒ›áƒ:"
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5352,6 +5359,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5392,8 +5407,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5421,15 +5437,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5539,6 +5555,10 @@ msgstr ""
msgid "Go to Function"
msgstr "ფუნქციის შექმნáƒ"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5571,10 +5591,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6268,11 +6284,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6511,12 +6532,13 @@ msgid "Clear transform"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ თრექის წáƒáƒ¨áƒšáƒ."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6527,13 +6549,32 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "შექმნáƒ"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6563,15 +6604,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "წáƒáƒ•áƒ¨áƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "შექმნáƒ"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6589,11 +6640,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6609,6 +6666,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6645,7 +6706,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8094,7 +8155,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8940,7 +9001,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8983,7 +9044,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9075,6 +9138,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9091,6 +9158,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9147,10 +9218,6 @@ msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9169,6 +9236,18 @@ msgid "Varyings can only be assigned in vertex function."
msgstr ""
#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "ზუმის გáƒáƒ–რდáƒ"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "ზუმის გáƒáƒ–რდáƒ"
+
+#, fuzzy
#~ msgid "Whole words"
#~ msgstr "მთლიáƒáƒœáƒ˜ სიტყვები"
@@ -9200,9 +9279,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡ რეჟიმის ცვლილებáƒ"
-#~ msgid "Edit Node Curve"
-#~ msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
-
#~ msgid "Anim Add Key"
#~ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 31c64514ca..40dd160409 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-16 16:07+0000\n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: 송태섭 <xotjq237@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -259,7 +259,6 @@ msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³  키를 삽입하시겠습니까?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -406,12 +405,10 @@ msgid "Delete Selection"
msgstr "ì„ íƒ ì‚­ì œ"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "ë‹¤ìŒ ìŠ¤í…으로 ì´ë™"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "ì´ì „ 스í…으로 ì´ë™"
@@ -535,15 +532,19 @@ msgstr "전체 바꾸기"
msgid "Selection Only"
msgstr "ì„ íƒ ì˜ì—­ë§Œ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "확대"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "축소"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "줌 리셋"
@@ -552,8 +553,9 @@ msgid "Warnings:"
msgstr "경고:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "확대:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "소스 í°íŠ¸ í¬ê¸°:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -666,9 +668,8 @@ msgid "Edit Connection: "
msgstr "연결 편집 "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "ì´ ì‹œê·¸ë„ì—ì„œ 모든 ì—°ê²°ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+msgstr "\"%s\" 시그ë„ì—ì„œ 모든 ì—°ê²°ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -713,8 +714,8 @@ msgid "Recent:"
msgstr "최근:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "검색:"
@@ -765,8 +766,7 @@ msgid "Resource"
msgstr "리소스"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "경로"
@@ -822,9 +822,8 @@ msgid "Error loading:"
msgstr "불러오기 중 ì—러:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "ì¢…ì† ê´€ê³„ë¥¼ ì°¾ì„ ìˆ˜ 없어 씬를 불러올 수 없습니다:"
+msgstr "ì¢…ì† ê´€ê³„ë¥¼ ì°¾ì„ ìˆ˜ 없어 ì”¬ì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1226,8 +1225,7 @@ msgid "Node Name:"
msgstr "노드 ì´ë¦„:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ì´ë¦„"
@@ -1305,7 +1303,6 @@ msgid "File Exists, Overwrite?"
msgstr "파ì¼ì´ 존재합니다. ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "ì´ í´ë” ì„ íƒ"
@@ -1314,15 +1311,13 @@ msgid "Copy Path"
msgstr "경로 복사"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—ì„œ 보기"
+msgstr "íŒŒì¼ íƒìƒ‰ê¸°ì—ì„œ 열기"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—ì„œ 보기"
+msgstr "íŒŒì¼ íƒìƒ‰ê¸°ì—ì„œ 보기"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1465,19 +1460,16 @@ msgid "Methods"
msgstr "메서드"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "메서드"
+msgstr "메서드:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "ì†ì„±"
+msgstr "테마 ì†ì„±"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "ì†ì„±:"
+msgstr "테마 ì†ì„±:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1504,14 +1496,12 @@ msgid "Constants:"
msgstr "ìƒìˆ˜:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "설명"
+msgstr "í´ëž˜ìŠ¤ 설명"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "설명:"
+msgstr "í´ëž˜ìŠ¤ 설명:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1528,12 +1518,10 @@ msgstr ""
"니다."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "ì†ì„± 설명:"
+msgstr "ì†ì„± 설명"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "ì†ì„± 설명:"
@@ -1546,12 +1534,10 @@ msgstr ""
"기여하여[/url][/color] ë” ë‚˜ì•„ì§€ê²Œ ë„와주세요!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "메서드 설명:"
+msgstr "메서드 설명"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "메서드 설명:"
@@ -1569,49 +1555,40 @@ msgid "Search Help"
msgstr "ë„ì›€ë§ ê²€ìƒ‰"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Normal 표시"
+msgstr "ëª¨ë‘ í‘œì‹œ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "í´ëž˜ìŠ¤(Class)"
+msgstr "í´ëž˜ìŠ¤ë§Œ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "메서드"
+msgstr "메서드만"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "시그ë„(Signal)"
+msgstr "시그ë„만"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "ìƒìˆ˜(Constant)"
+msgstr "ìƒìˆ˜ë§Œ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "ì†ì„±"
+msgstr "ì†ì„±ë§Œ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "ì†ì„±"
+msgstr "테마 ì†ì„±ë§Œ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "멤버"
+msgstr "멤버 타입"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "í´ëž˜ìŠ¤:"
+msgstr "í´ëž˜ìŠ¤"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1710,6 +1687,12 @@ msgstr "ì´ ìž‘ì—…ì€ íŠ¸ë¦¬ 루트 ì—†ì´ëŠ” 불가합니다."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1718,7 +1701,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "열려있는 ì”¬ì„ ë®ì–´ 쓸 수 없습니다!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1968,13 +1951,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "애드온 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"해당 경로ì—ì„œ 애드온 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s' 스í¬ë¦½íŠ¸ê°€ tool 모드"
-"가 아닙니다."
+"해당 경로ì—ì„œ 애드온 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s' ì½”ë“œì— ì˜¤ë¥˜ê°€ 있는 "
+"것 같습니다, êµ¬ë¬¸ì„ í™•ì¸í•´ 보십시오."
#: editor/editor_node.cpp
msgid ""
@@ -2028,7 +2010,6 @@ msgstr "기본"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—ì„œ 보기"
@@ -2113,7 +2094,6 @@ msgid "Save Scene"
msgstr "씬 저장"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "모든 씬 저장"
@@ -2143,7 +2123,7 @@ msgid "Undo"
msgstr "ë˜ëŒë¦¬ê¸°"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "다시 실행"
@@ -2167,7 +2147,7 @@ msgstr "프로ì íŠ¸ 설정"
msgid "Export"
msgstr "내보내기"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ë„구"
@@ -2598,9 +2578,17 @@ msgstr "지정하기.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"파ì¼ë¡œ ì €ìž¥ëœ ë¦¬ì†ŒìŠ¤ì—ì„œ ViewportTexture를 만들 수 없습니다.\n"
+"리소스가 ì”¬ì— ì†í•´ 있어야 합니다."
#: editor/editor_properties.cpp
msgid ""
@@ -2609,13 +2597,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"리소스가 ì”¬ì— ë¡œì»¬ë¡œ 설정ë˜ì§€ 않았기 ë•Œë¬¸ì— ViewportTexture를 만들 수 없습니"
+"다.\n"
+"ë¦¬ì†ŒìŠ¤ì˜ 'local to scene' ì†ì„±ì„ 켜십시오 (그리고 모든 리소스를 노드가 í¬í•¨í•˜"
+"고 있어야 합니다)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "ë·°í¬íŠ¸ ì„ íƒ"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "새 스í¬ë¦½íŠ¸"
@@ -2923,9 +2914,8 @@ msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
msgstr "file_type_cache.cch를 열수 없어서, íŒŒì¼ íƒ€ìž… ìºì‰¬ë¥¼ 저장하지 않습니다!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "ì¦ê²¨ì°¾ê¸°:"
+msgstr "ì¦ê²¨ì°¾ê¸°"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3009,14 +2999,12 @@ msgid "Instance"
msgstr "ì¸ìŠ¤í„´ìŠ¤"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "ì¦ê²¨ì°¾ê¸°:"
+msgstr "ì¦ê²¨ì°¾ê¸°ë¡œ 추가"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "그룹ì—ì„œ 제거"
+msgstr "ì¦ê²¨ì°¾ê¸°ì—ì„œ 제거"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3038,7 +3026,7 @@ msgstr "복제..."
msgid "Move To..."
msgstr "ì´ë™..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "새 스í¬ë¦½íŠ¸..."
@@ -3047,12 +3035,10 @@ msgid "New Resource..."
msgstr "새 리소스..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "ëª¨ë‘ í™•ìž¥"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "ëª¨ë‘ ì ‘ê¸°"
@@ -3076,9 +3062,8 @@ msgid "Re-Scan Filesystem"
msgstr "íŒŒì¼ ì‹œìŠ¤í…œ 재검사"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "모드 토글"
+msgstr "분할 모드 토글"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3113,24 +3098,20 @@ msgid "Create Script"
msgstr "스í¬ë¦½íŠ¸ 만들기"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "파ì¼ì—ì„œ 찾기"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "찾기: "
+msgstr "찾기:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "í´ë”: "
+msgstr "í´ë”:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "í•„í„°"
+msgstr "í•„í„°:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3170,7 +3151,8 @@ msgid "Group name already exists."
msgstr "그룹 ì´ë¦„ì´ ì´ë¯¸ 존재합니다."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "유효하지 ì•Šì€ ê·¸ë£¹ ì´ë¦„."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3308,12 +3290,10 @@ msgid "Failed to load resource."
msgstr "리소스 불러오기 실패."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "모든 ì†ì„± 펼치기"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "모든 ì†ì„± 접기"
@@ -3419,14 +3399,13 @@ msgid "Activate now?"
msgstr "지금 실행하시겠습니까?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "í´ë¦¬ê³¤ 만들기"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "í´ë¦¬ê³¤ 편집"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3434,25 +3413,27 @@ msgid "Insert Point"
msgstr "í¬ì¸íŠ¸ 삽입"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "í´ë¦¬ê³¤ 편집 (ì  ì‚­ì œ)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "í´ë¦¬ê³¤ê³¼ í¬ì¸íŠ¸ ì‚­ì œ"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "í¬ì¸íŠ¸ 만들기."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"기존 í´ë¦¬ê³¤ 편집:\n"
"좌í´ë¦­: í¬ì¸íŠ¸ ì´ë™.\n"
@@ -3460,8 +3441,9 @@ msgstr ""
"ìš°í´ë¦­: í¬ì¸íŠ¸ 지우기."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "í¬ì¸íŠ¸ ì‚­ì œ"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "í¬ì¸íŠ¸ 지우기."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3508,15 +3490,6 @@ msgstr "í¬ì¸íŠ¸ë¥¼ ì„ íƒí•˜ê³  ì´ë™í•©ë‹ˆë‹¤, ìš°í´ë¦­ìœ¼ë¡œ í¬ì¸íŠ¸ë¥¼
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "í¬ì¸íŠ¸ 만들기."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "í¬ì¸íŠ¸ 지우기."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "í¬ì¸íŠ¸"
@@ -3595,7 +3568,6 @@ msgstr ""
"ì„ ê²€ìƒ‰í•  수 없습니다."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "노드 추가.."
@@ -4132,7 +4104,7 @@ msgstr "모ë‘"
msgid "Plugins"
msgstr "플러그ì¸"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "ì •ë ¬:"
@@ -4261,9 +4233,8 @@ msgid "Resize CanvasItem"
msgstr "CanvasItem í¬ê¸° ì¡°ì ˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "CanvasItem 회전"
+msgstr "CanvasItem 규모"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4286,18 +4257,19 @@ msgid "Paste Pose"
msgstr "í¬ì¦ˆ 붙여넣기"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "축소"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "배율 초기화"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "확대"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "ì„ íƒ ëª¨ë“œ"
@@ -4326,9 +4298,8 @@ msgid "Rotate Mode"
msgstr "회전 모드"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "í¬ê¸° ì¡°ì ˆ 모드 (R)"
+msgstr "규모 모드"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4427,9 +4398,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 있ë„ë¡ ë³µì›í•©ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "스켈레톤"
+msgstr "스켈레톤 설정"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4483,7 +4453,7 @@ msgstr "ë·°í¬íŠ¸ 보기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "그룹과 잠금 ì•„ì´ì½˜ ë³´ì´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4556,8 +4526,17 @@ msgstr ""
"드래그 & 드롭 + Alt : 노드 타입 변경"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "í´ë¦¬ê³¤3D 만들기"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "í´ë¦¬ê³¤ 만들기"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "í´ë¦¬ê³¤ 편집"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "í´ë¦¬ê³¤ 편집 (ì  ì‚­ì œ)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4658,37 +4637,9 @@ msgid "Item List Editor"
msgstr "항목 ëª©ë¡ ì—디터"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"ì´ ë…¸ë“œì— OccluderPolygon2D 리소스가 없습니다.\n"
-"새로 만들어서 지정하시겠습니까?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Occluder í´ë¦¬ê³¤ 만들기"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "기존 í´ë¦¬ê³¤ 편집:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "좌í´ë¦­: í¬ì¸íŠ¸ ì´ë™."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+좌í´ë¦­: 선분 분할."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "ìš°í´ë¦­: í¬ì¸íŠ¸ ì‚­ì œ."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "메쉬가 비었습니다!"
@@ -4924,9 +4875,8 @@ msgid "Create Navigation Polygon"
msgstr "네비게ì´ì…˜ í´ë¦¬ê³¤ 만들기"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "가시성 ì§ì‚¬ê°í˜•ì„ 만들기"
+msgstr "가시성 ì§ì‚¬ê°í˜• 만들기"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5057,6 +5007,11 @@ msgid "Add Point to Curve"
msgstr "ì»¤ë¸Œì— í¬ì¸íŠ¸ 추가"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "커브 닫기"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "ì»¤ë¸Œì˜ í¬ì¸íŠ¸ ì´ë™"
@@ -5084,6 +5039,11 @@ msgid "Click: Add Point"
msgstr "í´ë¦­: í¬ì¸íŠ¸ 추가"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "선분 분할 (커브)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "ìš°í´ë¦­: í¬ì¸íŠ¸ ì‚­ì œ"
@@ -5099,11 +5059,6 @@ msgstr "í¬ì¸íŠ¸ 추가 (빈 공간)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "선분 분할 (커브)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "í¬ì¸íŠ¸ ì‚­ì œ"
@@ -5160,6 +5115,10 @@ msgstr "아웃-컨트롤 í¬ì¸íŠ¸ ì‚­ì œ"
msgid "Remove In-Control Point"
msgstr "ì¸-컨트롤 í¬ì¸íŠ¸ ì‚­ì œ"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "선분 분할 (커브)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "관절 ì´ë™"
@@ -5170,10 +5129,20 @@ msgid ""
msgstr "Polygon2Dì˜ ìŠ¤ì¼ˆë ˆí†¤ ì†ì„±ì´ Skeleton2D 노드를 향하고 있지 ì•ŠìŒ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "본 ë™ê¸°í™”"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"ì´ ë…¸ë“œì— í…스ì³ê°€ 없습니다.\n"
+"êµ¬ì—­ì„ íŽ¸ì§‘í•˜ê¸° 위해서는 í…스ì³ë¥¼ 지정해야합니다."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "UV 맵 만들기"
@@ -5210,10 +5179,21 @@ msgid "Transform UV Map"
msgstr "UV 맵 변형"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "변형 타입"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "본 가중치 페ì¸íŠ¸"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "í´ë¦¬ê³¤ 2D UV ì—디터"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "í´ë¦¬ê³¤ 2D UV ì—디터"
@@ -5234,11 +5214,8 @@ msgid "Bones"
msgstr "본"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "í´ë¦¬ê³¤ 만들기"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "í¬ì¸íŠ¸ ì´ë™"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5266,19 +5243,23 @@ msgid "Scale Polygon"
msgstr "í´ë¦¬ê³¤ í¬ê¸° ì¡°ì ˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "ë‘ í¬ì¸íŠ¸ë¥¼ 연결하여 분할"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "지울 ë¶„í• ì„ ì„ íƒ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "지정한 ê°•ë„ë¡œ 가중치를 페ì¸íŠ¸"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "지정한 ê°•ë„ë¡œ 가중치를 페ì¸íŠ¸ 취소"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5404,9 +5385,8 @@ msgid "Error writing TextFile:"
msgstr "í…스트 íŒŒì¼ ì“°ê¸° ì—러:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "ì—러로 파ì¼ì„ 불러올 수 ì—†ìŒ."
+msgstr "ì—러: 파ì¼ì„ 불러올 수 ì—†ìŒ."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error could not load file."
@@ -5417,19 +5397,23 @@ msgid "Error saving file!"
msgstr "íŒŒì¼ ì €ìž¥ 중 ì—러!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "테마 저장 중 ì—러"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "저장 중 ì—러"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "테마 가져오는 중 ì—러"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "가져오는 중 ì—러"
#: editor/plugins/script_editor_plugin.cpp
@@ -5449,6 +5433,14 @@ msgid "Import Theme"
msgstr "테마 가져오기"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "테마 저장 중 ì—러"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "저장 중 ì—러"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "테마 다른 ì´ë¦„으로 저장..."
@@ -5489,8 +5481,9 @@ msgid "File"
msgstr "파ì¼"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "새 í…스트 파ì¼"
+#, fuzzy
+msgid "Open..."
+msgstr "열기"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5505,7 +5498,6 @@ msgid "Copy Script Path"
msgstr "스í¬ë¦½íŠ¸ 경로 복사"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "ì´ì „ 히스토리"
@@ -5519,6 +5511,11 @@ msgid "Theme"
msgstr "테마"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "테마 가져오기"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "테마 다시 불러오기"
@@ -5527,10 +5524,6 @@ msgid "Save Theme"
msgstr "테마 저장"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "테마 다른 ì´ë¦„으로 저장"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "문서 닫기"
@@ -5577,9 +5570,8 @@ msgid "Keep Debugger Open"
msgstr "디버거 í•­ìƒ ì—´ì–´ë†“ê¸°"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "외부 ì—디터와 디버그"
+msgstr "외부 ì—디터로 디버깅"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5622,7 +5614,6 @@ msgid "Debugger"
msgstr "디버거"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "검색 결과"
@@ -5635,9 +5626,12 @@ msgid "(ignore)"
msgstr "(무시함)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "함수로 ì´ë™..."
+msgstr "함수로 ì´ë™"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "표준"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5671,10 +5665,6 @@ msgstr "대문ìžë¡œ 시작"
msgid "Syntax Highlighter"
msgstr "구문 강조"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "표준"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5726,12 +5716,10 @@ msgid "Trim Trailing Whitespace"
msgstr "후행 공백 ë¬¸ìž ì œê±°"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
-msgstr "들여쓰기를 스페ì´ìŠ¤ë¡œ 변환"
+msgstr "들여쓰기를 공백으로 변환"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "들여쓰기를 탭으로 변환"
@@ -5749,12 +5737,10 @@ msgid "Remove All Breakpoints"
msgstr "ì¤‘ë‹¨ì  ëª¨ë‘ ì‚­ì œ"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "ë‹¤ìŒ ì¤‘ë‹¨ì ìœ¼ë¡œ ì´ë™"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "ì´ì „ 중단ì ìœ¼ë¡œ ì´ë™"
@@ -5763,17 +5749,14 @@ msgid "Find Previous"
msgstr "ì´ì „ 찾기"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "파ì¼ì—ì„œ 찾기..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "함수로 ì´ë™..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "ë¼ì¸ìœ¼ë¡œ ì´ë™..."
@@ -5872,7 +5855,7 @@ msgstr "피치"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "ìš”"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6039,9 +6022,8 @@ msgid "Freelook Speed Modifier"
msgstr "ìžìœ ì‹œì  ì†ë„ 변화"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "뷰 회전 잠금"
+msgstr "뷰 회전 잠김"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6375,12 +6357,18 @@ msgid "Set Region Rect"
msgstr "ì˜ì—­ 설정"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "핸들 설정"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "스냅 모드:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<ì—†ìŒ>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ì—†ìŒ"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6543,9 +6531,8 @@ msgid "Fix Invalid Tiles"
msgstr "ìž˜ëª»ëœ íƒ€ì¼ ìˆ˜ì •"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "ì„ íƒ í•­ëª© 화면 ì¤‘ì•™ì— í‘œì‹œ"
+msgstr "ì„ íƒ ìž˜ë¼ë‚´ê¸°"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6592,39 +6579,37 @@ msgid "Pick Tile"
msgstr "íƒ€ì¼ ì„ íƒ"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "ì„ íƒ ì´ë™"
+msgstr "ì„ íƒ ë³µì‚¬"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "회전 모드"
+msgstr "왼쪽으로 회전"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "오른쪽으로 ì´ë™"
+msgstr "오른쪽으로 회전"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "가로로 뒤집기"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "세로로 뒤집기"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "변형"
+msgstr "변형 지우기"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "타ì¼ì…‹ì— í…ìŠ¤ì³ ì¶”ê°€"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "현재 í…스ì³ë¥¼ 타ì¼ì…‹ì—ì„œ 제거"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6636,21 +6621,40 @@ msgid "Merge from Scene"
msgstr "씬으로부터 병합하기"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"사용할 서브 타ì¼ì„ ì•„ì´ì½˜ìœ¼ë¡œ 설정하세요, 효력없는 ìžë™íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì‚¬ìš©ë©"
-"니다."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "íƒ€ì¼ ì´ë¦„ ë³´ì´ê¸° (Alt 키를 누르세요)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "애니메ì´ì…˜ 붙여넣기"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "í¬ì¸íŠ¸ 지우기."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "íƒ€ì¼ ì´ë¦„ ë³´ì´ê¸° (Alt 키를 누르세요)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
-msgstr "ì„ íƒí•œ í…스ì³ì™€ 모든 타ì¼ì„ 삭제하시겠습니까?"
+msgstr "ì„ íƒí•œ í…스ì³ì™€ ê·¸ê²ƒì„ ì‚¬ìš©í•˜ëŠ” 모든 타ì¼ì„ 삭제하겠습니까?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
@@ -6665,9 +6669,8 @@ msgid "Merge from scene?"
msgstr "씬으로부터 병합하시겠습니까?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " %s 파ì¼ì´ ì´ë¯¸ 목ë¡ì— 존재하여 추가ë˜ì§€ 않습니다."
+msgstr "%s 파ì¼ì´ ì´ë¯¸ 목ë¡ì— 존재하여 추가ë˜ì§€ 않습니다."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6678,21 +6681,32 @@ msgstr ""
"다른 타ì¼ì„ 편집하려면 í´ë¦­."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"좌í´ë¦­: 비트 켜기 설정.\n"
-"ìš°í´ë¦­: 비트 ë„기 설정.\n"
+"현재 íŽ¸ì§‘ëœ ì„œë¸Œ íƒ€ì¼ ì„ íƒ.\n"
"다른 타ì¼ì„ 편집하려면 í´ë¦­."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "í¬ì¸íŠ¸ ì‚­ì œ"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"현재 íŽ¸ì§‘ëœ ì„œë¸Œ íƒ€ì¼ ì„ íƒ.\n"
+"좌í´ë¦­: 비트 켜기 설정.\n"
+"ìš°í´ë¦­: 비트 ë„기 설정.\n"
"다른 타ì¼ì„ 편집하려면 í´ë¦­."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6714,11 +6728,21 @@ msgstr ""
"다른 타ì¼ì„ 편집하려면 í´ë¦­."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"서브 타ì¼ì„ ì„ íƒí•´ ìš°ì„  순위를 바꿈.\n"
+"다른 타ì¼ì„ 편집하려면 í´ë¦­."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "ì´ ì†ì„±ì„ 바꿀 수 없습니다."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "íƒ€ì¼ ì…‹"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6734,6 +6758,11 @@ msgid "Light"
msgstr "ë¹›"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "노드 추가.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "비주얼 ì…°ì´ë”"
@@ -6755,12 +6784,11 @@ msgstr "ì´ í”Œëž«í¼ì— 대한 내보내기 í…œí”Œë¦¿ì´ ì—†ê±°ë‚˜ ì†ìƒë¨:"
#: editor/project_export.cpp
msgid "Release"
-msgstr ""
+msgstr "ë°°í¬"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "%s 내보내기"
+msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
#: editor/project_export.cpp
msgid "Presets"
@@ -6772,8 +6800,8 @@ msgstr "추가..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "프리셋 내보내기:"
+msgid "Export Path"
+msgstr "경로 내보내기:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6834,14 +6862,12 @@ msgid "Export PCK/Zip"
msgstr "PCK/Zip 내보내기"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "내보내기 모드:"
+msgstr "내보내기 모드?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "내보내기"
+msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7526,16 +7552,14 @@ msgid "Step"
msgstr "단계"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
-msgstr "ì¹´ìš´í„°ê°€ ê° ë…¸ë“œì—ì„œ ì¦ê°€í•˜ëŠ” ì–‘"
+msgstr "ê° ë…¸ë“œì— ëŒ€í•´ ì¹´ìš´í„°ê°€ ì¦ê°€í•˜ëŠ” ì–‘"
#: editor/rename_dialog.cpp
msgid "Padding"
msgstr "패딩(Padding)"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7682,6 +7706,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"\"editable_instance\"를 비활설화 하면 ë…¸ë“œì˜ ëª¨ë“  ì†ì„±ì´ 기본 값으로 ë˜ëŒì•„ê°‘"
+"니다."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7755,9 +7781,8 @@ msgid "Clear Inheritance"
msgstr "ìƒì† 지우기"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Godot 온ë¼ì¸ 문서 열기"
+msgstr "문서 열기"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7772,9 +7797,8 @@ msgid "Change Type"
msgstr "타입 변경"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "스í¬ë¦½íŠ¸ 열기"
+msgstr "스í¬ë¦½íŠ¸ 확장"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7936,9 +7960,8 @@ msgid "Path is empty"
msgstr "경로가 비어 있ìŒ"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "스프ë¼ì´íŠ¸ê°€ 비었습니다!"
+msgstr "íŒŒì¼ ì´ë¦„ì´ ë¹„ì—ˆìŠµë‹ˆë‹¤"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8029,9 +8052,8 @@ msgid "Bytes:"
msgstr "ë°”ì´íŠ¸:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "ìŠ¤íƒ í”„ë ˆìž„"
+msgstr "ìŠ¤íƒ ì¶”ì "
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8258,7 +8280,8 @@ msgid "GDNative"
msgstr "GD네ì´í‹°ë¸Œ"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "ìŠ¤í… ì¸ìˆ˜ê°€ 제로입니다!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8481,7 +8504,7 @@ msgstr "내부 예외 ìŠ¤íƒ ì¶”ì ì˜ ë"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "NavMesh ë² ì´í¬"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8867,12 +8890,11 @@ msgstr "비주얼 스í¬ë¦½íŠ¸ 검색"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Get %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Set "
+msgstr "Set %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -8970,6 +8992,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"CPUParticles2D 애니메ì´ì…˜ì„ 사용하려면 \"Particles Animation\"ì´ í™œì„±í™”ëœ "
+"CanvasItemMaterialì´ í•„ìš”í•©ë‹ˆë‹¤."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9022,6 +9046,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Particles2D 애니메ì´ì…˜ì„ 사용하려면 \"Particles Animation\"ì´ í™œì„±í™”ëœ "
+"CanvasItemMaterialì´ í•„ìš”í•©ë‹ˆë‹¤."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9161,14 +9187,16 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr "ë©”ì‹œë“¤ì„ íŒ¨ìŠ¤ë¥¼ 그리ë„ë¡ í• ë‹¹í•˜ì§€ 않았으므로 ë³´ì´ì§€ 않습니다."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "ì§€ì •ëœ ë©”ì‹œê°€ 없으므로 ì•„ë¬´ê²ƒë„ ë³´ì´ì§€ 않습니다."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"CPUParticles 애니메ì´ì…˜ì„ 사용하려면 \"Billboard Particles\"ì´ í™œì„±í™”ëœ "
+"SpatialMaterialì´ í•„ìš”í•©ë‹ˆë‹¤."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9198,20 +9226,23 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Particles 애니메ì´ì…˜ì„ 사용하려면 \"Billboard Particles\"ì´ í™œì„±í™”ëœ "
+"SpatialMaterialì´ í•„ìš”í•©ë‹ˆë‹¤."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D는 Path2D ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
+msgstr "PathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D는 Path2D ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
+msgstr "OrientedPathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
-msgstr ""
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
+msgstr "OrientedPathFollow는 부모 Pathì—ì„œ 벡터를 활성화해야 합니다."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9249,7 +9280,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "ì´ ë°”ë””ëŠ” 메시를 설정할 ë•Œ 까지 무시ë©ë‹ˆë‹¤"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9313,6 +9343,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "AnimationPlayer 루트가 유효한 노드가 아닙니다."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Raw 모드"
@@ -9329,6 +9363,10 @@ msgstr "경고!"
msgid "Please Confirm..."
msgstr "확ì¸í•´ì£¼ì„¸ìš”..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9340,7 +9378,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "exp_editì´ ì°¸ì´ë¼ë©´ min_value는 반드시 > 0 ì´ì–´ì•¼ 합니다."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9396,10 +9434,6 @@ msgstr "유효하지 ì•Šì€ í°íŠ¸ í¬ê¸°."
msgid "Input"
msgstr "ìž…ë ¥"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ì—†ìŒ"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "ì…°ì´ë”ì— ìœ íš¨í•˜ì§€ ì•Šì€ ì†ŒìŠ¤."
@@ -9416,6 +9450,59 @@ msgstr "ê· ì¼í•˜ê²Œ 배치함."
msgid "Varyings can only be assigned in vertex function."
msgstr "Varyings는 ì˜¤ì§ ë²„í…스 함수ì—서만 지정할 수 있습니다."
+#~ msgid "Create Poly"
+#~ msgstr "í´ë¦¬ê³¤ 만들기"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기"
+
+#~ msgid "Zoom out"
+#~ msgstr "축소"
+
+#~ msgid "Zoom in"
+#~ msgstr "확대"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "í´ë¦¬ê³¤3D 만들기"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "ì´ ë…¸ë“œì— OccluderPolygon2D 리소스가 없습니다.\n"
+#~ "새로 만들어서 지정하시겠습니까?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "기존 í´ë¦¬ê³¤ 편집:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "좌í´ë¦­: í¬ì¸íŠ¸ ì´ë™."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+좌í´ë¦­: 선분 분할."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "ìš°í´ë¦­: í¬ì¸íŠ¸ ì‚­ì œ."
+
+#~ msgid "New TextFile"
+#~ msgstr "새 í…스트 파ì¼"
+
+#~ msgid "Save Theme As"
+#~ msgstr "테마 다른 ì´ë¦„으로 저장"
+
+#~ msgid "<None>"
+#~ msgstr "<ì—†ìŒ>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "사용할 서브 타ì¼ì„ ì•„ì´ì½˜ìœ¼ë¡œ 설정하세요, 효력없는 ìžë™íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì‚¬"
+#~ "ìš©ë©ë‹ˆë‹¤."
+
+#~ msgid "Zoom:"
+#~ msgstr "확대:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "\" ì—ì„œ 모든 ì—°ê²°ì„ ì œê±°í•˜ì‹œê² ìŠµë‹ˆê¹Œ"
@@ -10115,9 +10202,6 @@ msgstr "Varyings는 ì˜¤ì§ ë²„í…스 함수ì—서만 지정할 수 있습니다.
#~ msgid "Source Font:"
#~ msgstr "소스 í°íŠ¸:"
-#~ msgid "Source Font Size:"
-#~ msgstr "소스 í°íŠ¸ í¬ê¸°:"
-
#~ msgid "Dest Resource:"
#~ msgstr "리소스 경로:"
@@ -10911,13 +10995,6 @@ msgstr "Varyings는 ì˜¤ì§ ë²„í…스 함수ì—서만 지정할 수 있습니다.
#~ msgid "Scale Region Editor"
#~ msgstr "ìŠ¤ì¼€ì¼ êµ¬ì—­ 편집기"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "ì´ ë…¸ë“œì— í…스ì³ê°€ 없습니다.\n"
-#~ "êµ¬ì—­ì„ íŽ¸ì§‘í•˜ê¸° 위해서는 í…스ì³ë¥¼ 지정해야합니다."
-
#~ msgid "Inherit Scene"
#~ msgstr "ìƒì† 씬"
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 3926aea3e4..4bb1a5b724 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -7,16 +7,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-06-12 09:40+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: Kornelijus <kornelijus.github@gmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/lt/>\n"
"Language: lt\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n"
-"X-Generator: Weblate 3.0.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -258,7 +260,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -530,15 +531,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Priartinti"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Nutolinti"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Atstatyti PriartinimÄ…"
@@ -547,9 +552,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "Priartinti"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -713,8 +717,8 @@ msgid "Recent:"
msgstr "Naujausi:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -761,8 +765,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1214,8 +1217,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1680,6 +1682,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2077,7 +2085,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2101,7 +2109,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2516,6 +2524,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2532,8 +2546,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2958,7 +2971,7 @@ msgstr "Duplikuoti"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3084,7 +3097,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Netinkamas Å¡rifto dydis."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3333,44 +3346,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Keisti Poligono SkalÄ™"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Priedai"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Sukurti"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3415,16 +3429,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Sukurti"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3501,7 +3505,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4047,7 +4050,7 @@ msgstr "Visi"
msgid "Plugins"
msgstr "Priedai"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4195,21 +4198,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Nutolinti"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Nutolinti"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Priartinti"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4463,7 +4464,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4565,35 +4575,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4961,6 +4945,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4988,6 +4976,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5003,11 +4995,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5064,6 +5051,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5074,7 +5065,14 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5117,10 +5115,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Atidaryti 2D Editorių"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5141,12 +5149,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon"
-msgstr "Keisti Poligono SkalÄ™"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5174,19 +5177,19 @@ msgid "Scale Polygon"
msgstr "Keisti Poligono SkalÄ™"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5326,20 +5329,24 @@ msgid "Error saving file!"
msgstr "Įvyko klaida kraunant šriftą."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Įvyko klaida kraunant šriftą."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Įvyko klaida kraunant šriftą."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Įvyko klaida kraunant šriftą."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Įvyko klaida kraunant šriftą."
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5360,6 +5367,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5400,8 +5415,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "Atidaryti"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5429,15 +5445,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importuoti Animacijas..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5545,6 +5562,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5577,10 +5598,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6273,11 +6290,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6516,12 +6538,13 @@ msgid "Clear transform"
msgstr "Animacija: Pakeisti TransformacijÄ…"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "Panaikinti pasirinkimÄ…"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6532,13 +6555,32 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6568,15 +6610,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6594,11 +6646,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6614,6 +6672,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6650,8 +6712,9 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
-msgstr ""
+#, fuzzy
+msgid "Export Path"
+msgstr "Importuoti iš Nodo:"
#: editor/project_export.cpp
msgid "Resources"
@@ -8108,7 +8171,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8955,7 +9018,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9000,7 +9063,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9093,6 +9158,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9109,6 +9178,10 @@ msgstr "Įspėjimas!"
msgid "Please Confirm..."
msgstr "Prašome Patvirtinti..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9165,10 +9238,6 @@ msgstr "Netinkamas Å¡rifto dydis."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9186,6 +9255,18 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Nutolinti"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Priartinti"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Priartinti"
+
#~ msgid "Disabled"
#~ msgstr "IÅ¡jungta"
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index ff10ecd88c..972bdda952 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -3,19 +3,22 @@
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
# Gustavs Porietis (pg829-) <porietisgustavs@gmail.com>, 2018.
+# Martch Zagorski <martchzagorski@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-11 13:29+0000\n"
-"Last-Translator: Gustavs Porietis (pg829-) <porietisgustavs@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
+"Last-Translator: Martch Zagorski <martchzagorski@gmail.com>\n"
"Language-Team: Latvian <https://hosted.weblate.org/projects/godot-engine/"
"godot/lv/>\n"
"Language: lv\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= "
"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
-"X-Generator: Weblate 3.2.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -30,7 +33,7 @@ msgstr "Nepietiekams skaits baitu lai dekodÄ“tu baitus vai nepareizs formÄts."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr ""
+msgstr "NederÄ«ga ievade %i (nav padota) izteikumÄ"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -38,19 +41,19 @@ msgstr ""
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
+msgstr "Nederīgi operatoru %s, %s un %s operandi."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr ""
+msgstr "NederÄ«gs %s tipa indekss bÄzes tipam %s"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr ""
+msgstr "NederÄ«gs nosaukts indekss '%s' bÄzes tipam %s"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
-msgstr "Nepareizs arguments lai konstruētu '%s'"
+msgstr "Nderīgs arguments, lai izveidotu '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
@@ -141,11 +144,11 @@ msgstr "Pievienot celiņu"
#: editor/animation_track_editor.cpp
msgid "Animation Length Time (seconds)"
-msgstr "AnimÄcijas garums (sekundÄ“s)."
+msgstr "AnimÄcijas Garums (sekundes)"
#: editor/animation_track_editor.cpp
msgid "Animation Looping"
-msgstr "AnimÄcijas cikls."
+msgstr "AnimÄciju Cilpa"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -250,7 +253,6 @@ msgstr "Izveidot %d JAUNU celiņu un ievietot atslēgievietni?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -525,15 +527,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "PietuvinÄt"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "AttÄlinÄt"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "AtiestatÄ«t tÄlummaiņu"
@@ -542,8 +548,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "PietuvinÄt:"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -702,8 +708,8 @@ msgid "Recent:"
msgstr "Nesenie:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Meklēt:"
@@ -750,8 +756,7 @@ msgid "Resource"
msgstr "Resurs"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -919,7 +924,7 @@ msgstr "Bronzas Donors"
#: editor/editor_about.cpp
msgid "Donors"
-msgstr "Donors"
+msgstr "ZiedotÄji"
#: editor/editor_about.cpp
msgid "License"
@@ -1216,8 +1221,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nosaukums"
@@ -1681,6 +1685,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2079,7 +2089,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2103,7 +2113,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2515,6 +2525,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2531,8 +2547,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2947,7 +2962,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3076,7 +3091,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Nederīgs nosaukums."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3322,44 +3337,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Izveidot"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Izveidot"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Izveidot"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3405,16 +3421,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Izveidot"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3491,7 +3497,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4028,7 +4033,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4176,21 +4181,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "AttÄlinÄt"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "AttÄlinÄt"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "PietuvinÄt"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4444,7 +4447,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Izveidot"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4546,35 +4558,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4942,6 +4928,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4969,6 +4959,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4984,11 +4978,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5045,6 +5034,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5055,7 +5048,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5097,7 +5096,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Izveidot"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5121,12 +5129,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon"
-msgstr "Izveidot"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5154,19 +5157,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5305,20 +5308,24 @@ msgid "Error saving file!"
msgstr "Kļūmes lÄdÄ“jot!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Kļūmes lÄdÄ“jot!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Kļūme lÄdÄ“jot:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Kļūda lÄdÄ“jot fontu."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Kļūme lÄdÄ“jot:"
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5339,6 +5346,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5379,8 +5394,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "Atvērt"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5408,15 +5424,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5526,6 +5542,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Izveidot Funkciju"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5558,10 +5578,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6255,11 +6271,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6498,12 +6519,13 @@ msgid "Clear transform"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "Noņemt Izvēlēto"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6514,13 +6536,33 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Ielīmēt celiņus"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Izveidot"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6550,15 +6592,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Izdzēst izvēlētos failus?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Izveidot"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6576,11 +6628,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6596,6 +6654,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6632,7 +6694,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8080,7 +8142,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8924,7 +8986,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8967,7 +9029,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9058,6 +9122,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9074,6 +9142,10 @@ msgstr "BrÄ«dinÄjums!"
msgid "Please Confirm..."
msgstr "LÅ«dzu Apstipriniet..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9130,10 +9202,6 @@ msgstr "Nederīgs fonta izmērs."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9151,6 +9219,17 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "AttÄlinÄt"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "PietuvinÄt"
+
+#~ msgid "Zoom:"
+#~ msgstr "PietuvinÄt:"
+
#~ msgid "Disabled"
#~ msgstr "Atspējots"
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index 0f15ac029c..2a5c1b959f 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -6,15 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-08-28 18:40+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: christy james <jkuttu@gmail.com>\n"
"Language-Team: Malayalam <https://hosted.weblate.org/projects/godot-engine/"
"godot/ml/>\n"
"Language: ml\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -247,7 +249,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -515,15 +516,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -532,7 +537,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -690,8 +695,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -738,8 +743,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1191,8 +1195,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1647,6 +1650,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2043,7 +2052,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2067,7 +2076,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2478,6 +2487,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2494,8 +2509,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2908,7 +2922,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3031,7 +3045,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3277,14 +3291,12 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3292,29 +3304,29 @@ msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3359,15 +3371,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3443,7 +3446,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3975,7 +3977,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4123,15 +4125,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4387,7 +4389,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4489,35 +4499,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4885,6 +4869,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4912,6 +4900,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4927,11 +4919,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -4988,6 +4975,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -4998,7 +4989,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5038,7 +5035,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5062,11 +5067,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5094,19 +5095,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5244,19 +5245,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5276,6 +5277,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5316,7 +5325,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5345,15 +5354,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5460,6 +5469,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5492,10 +5505,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6184,11 +6193,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6424,11 +6438,11 @@ msgid "Clear transform"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6440,13 +6454,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6476,15 +6508,23 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete selected Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6502,11 +6542,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6522,6 +6568,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6558,7 +6608,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8001,7 +8051,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8843,7 +8893,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8886,7 +8936,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -8974,6 +9026,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -8990,6 +9046,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9046,10 +9106,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index 07b812a5dc..1ba233dfb1 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -9,15 +9,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-07-29 03:39+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: Nafis Ibrahim <thepreciousnafis@gmail.com>\n"
"Language-Team: Malay <https://hosted.weblate.org/projects/godot-engine/godot/"
"ms/>\n"
"Language: ms\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.1.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -255,7 +257,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -524,15 +525,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -541,7 +546,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -699,8 +704,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -747,8 +752,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1200,8 +1204,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1656,6 +1659,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2052,7 +2061,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2076,7 +2085,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2487,6 +2496,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2503,8 +2518,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2917,7 +2931,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3040,7 +3054,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3286,14 +3300,12 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3301,29 +3313,29 @@ msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3368,15 +3380,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3452,7 +3455,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3986,7 +3988,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4134,15 +4136,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4398,7 +4400,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4500,35 +4510,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4896,6 +4880,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4923,6 +4911,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4938,11 +4930,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -4999,6 +4986,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5009,7 +5000,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5049,7 +5046,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5073,11 +5078,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5105,19 +5106,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5255,19 +5256,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5287,6 +5288,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5327,7 +5336,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5356,15 +5365,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5471,6 +5480,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5503,10 +5516,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6195,11 +6204,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6438,11 +6452,11 @@ msgid "Clear transform"
msgstr "Anim Ubah Penukaran"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6454,13 +6468,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6490,15 +6522,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Semua Pilihan"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Semua Pilihan"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6516,11 +6558,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6536,6 +6584,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6572,7 +6624,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8017,7 +8069,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8861,7 +8913,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8904,7 +8956,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -8992,6 +9046,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9008,6 +9066,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9064,10 +9126,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 6f08cbbc12..c26538ce3a 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -15,15 +15,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-15 21:32+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/godot-"
-"engine/godot/nb/>\n"
+"engine/godot/nb_NO/>\n"
"Language: nb\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -56,8 +58,9 @@ msgid "Invalid index of type %s for base type %s"
msgstr "Ugyldig indeks egenskap navn '%s' i node %s."
#: core/math/expression.cpp
+#, fuzzy
msgid "Invalid named index '%s' for base type %s"
-msgstr ""
+msgstr "Ugyldig navngitt indeks \"%s\" for grunntypen %s"
#: core/math/expression.cpp
#, fuzzy
@@ -272,7 +275,6 @@ msgstr "Lag %d NYE spor og sett inn nøkler?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -549,15 +551,19 @@ msgstr "Erstatt Alle"
msgid "Selection Only"
msgstr "Kun Valgte"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom Inn"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom Ut"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Nullstill Zoom"
@@ -567,8 +573,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Zoom Inn"
+msgid "Font Size:"
+msgstr "Frontvisning"
#: editor/code_editor.cpp
msgid "Line:"
@@ -734,8 +740,8 @@ msgid "Recent:"
msgstr "Nylige:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Søk:"
@@ -786,8 +792,7 @@ msgid "Resource"
msgstr "Ressurs"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Søkesti"
@@ -1252,8 +1257,7 @@ msgid "Node Name:"
msgstr "Nodenavn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Navn"
@@ -1736,6 +1740,12 @@ msgstr "Denne operasjonen kan ikke gjennomføres uten en trerot."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2175,7 +2185,7 @@ msgid "Undo"
msgstr "Angre"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Gjenta"
@@ -2200,7 +2210,7 @@ msgstr "Prosjektinnstillinger"
msgid "Export"
msgstr "Eksporter"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Verktøy"
@@ -2651,6 +2661,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2667,8 +2683,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3118,7 +3133,7 @@ msgstr "Duplisér"
msgid "Move To..."
msgstr "Flytt Til..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Hurtigåpne Skript..."
@@ -3262,7 +3277,7 @@ msgstr "ERROR: Animasjonsnavnet finnes allerede!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ugyldig navn."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3523,14 +3538,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Lag Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Rediger Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3538,25 +3553,28 @@ msgid "Insert Point"
msgstr "Sett inn Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Rediger Poly (Fjern Punkt)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Fjern Poly Og Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Lag en ny polygon fra bunnen"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Slett punkter"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Endre eksisterende polygon:\n"
"Venstreklikk: Flytt Punkt.\n"
@@ -3564,8 +3582,10 @@ msgstr ""
"Høyreklikk: Fjern Punkt."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Slett punkter"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "Høyreklikk: Slett Punkt."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3611,17 +3631,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Slett punkter"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Høyreklikk: Slett Punkt."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Flytt Punkt"
@@ -3700,7 +3709,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4266,7 +4274,7 @@ msgstr "Alle"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sorter:"
@@ -4420,21 +4428,19 @@ msgid "Paste Pose"
msgstr "Lim Inn Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zoom Ut"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zoom Ut"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zoom Inn"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Velg Modus"
@@ -4705,8 +4711,17 @@ msgstr ""
"Dra & Slipp + Alft: Endre nodetype"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Lag Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Lag Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Rediger Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Rediger Poly (Fjern Punkt)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
#, fuzzy
@@ -4811,35 +4826,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Lag en ny polygon fra bunnen."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Rediger eksisterende polygon:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Venstreklikk: Flytt Punkt."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+Venstreklikk: Splitt Segment."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "Høyreklikk: Slett Punkt."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5210,6 +5199,11 @@ msgid "Add Point to Curve"
msgstr "Legg til Punkt på Kurve"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Lukk Kurve"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Flytt Punkt på Kurve"
@@ -5237,6 +5231,11 @@ msgid "Click: Add Point"
msgstr "Klikk: Legg til Punkt"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Split Segment (i kurve)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Høyreklikk: Fjern Punkt"
@@ -5252,11 +5251,6 @@ msgstr "Legg til Punkt (i tomt rom)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Split Segment (i kurve)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Fjern Punkt"
@@ -5317,6 +5311,10 @@ msgstr "Fjern Funksjon"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Split Segment (i kurve)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5329,10 +5327,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Vis Ben"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr ""
@@ -5374,10 +5378,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Lag Poly"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Ã…pne 2D Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5402,11 +5416,7 @@ msgstr "Lag Ben"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Lag Poly"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Flytt Punkt"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5434,20 +5444,20 @@ msgid "Scale Polygon"
msgstr "Skaler Polygon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Velg en Mappe å Skanne"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5601,19 +5611,23 @@ msgid "Error saving file!"
msgstr "Error ved lagring av TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Error ved lasting av tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Error ved lagring"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Error ved importering av tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Error ved importering"
#: editor/plugins/script_editor_plugin.cpp
@@ -5636,6 +5650,14 @@ msgid "Import Theme"
msgstr "Importer Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Error ved lasting av tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Error ved lagring"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Lagre Tema Som..."
@@ -5677,8 +5699,8 @@ msgstr "Fil"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Vis Filer"
+msgid "Open..."
+msgstr "Ã…pne"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5707,6 +5729,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importer Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Gjeninnlast drakt"
@@ -5715,10 +5742,6 @@ msgid "Save Theme"
msgstr "Lagre drakt"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Lagre drakt som"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Lukk Dokumentasjon"
@@ -5826,6 +5849,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Fjern Funksjon"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5858,10 +5885,6 @@ msgstr "Store bokstaver"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6576,11 +6599,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Sett Handle"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6828,12 +6857,12 @@ msgstr "Anim Forandre Omforming"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Legg til node(r) fra tre"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Fjern Kurvepunkt"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6845,13 +6874,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Lim inn Animasjon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Høyreklikk: Slett Punkt."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Lag en ny polygon fra bunnen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6881,16 +6931,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Slett valgte filer?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Velg Gjeldende Mappe"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Slett punkter"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Velg Gjeldende Mappe"
@@ -6909,12 +6970,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Velg Gjeldende Mappe"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Denne operasjonen kan ikke gjøres uten en scene."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6931,6 +6999,10 @@ msgid "Light"
msgstr "Høyre"
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6969,7 +7041,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Eksporter Prosjekt"
#: editor/project_export.cpp
@@ -8463,7 +8535,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9344,7 +9416,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9387,7 +9459,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9480,6 +9554,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Animasjonstre er ugyldig."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9496,6 +9574,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9553,10 +9635,6 @@ msgstr "Ugyldig fontstørrelse."
msgid "Input"
msgstr "Legg til Input"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9574,6 +9652,46 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Lag Poly"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Lag en ny polygon fra bunnen"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zoom Ut"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zoom Inn"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Lag Poly3D"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Rediger eksisterende polygon:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Venstreklikk: Flytt Punkt."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+Venstreklikk: Splitt Segment."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "Høyreklikk: Slett Punkt."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Vis Filer"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Lagre drakt som"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zoom Inn"
+
#~ msgid "Class List:"
#~ msgstr "Klasseliste:"
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index ba5a4db2dc..652fe9231f 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -24,18 +24,22 @@
# Wout Standaert <wout@blobkat.com>, 2017.
# Zatherz <zatherz@linux.pl>, 2017.
# Tahar Meijs <tntmeijs@gmail.com>, 2018.
+# Laurent Windels <laurentwindels@yahoo.com>, 2018.
+# rxadmin <r.van.eeghem@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-09-24 22:24+0000\n"
-"Last-Translator: frank <frankvprive@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:41+0100\n"
+"Last-Translator: rxadmin <r.van.eeghem@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -270,7 +274,6 @@ msgstr "Maak %d NIEUWE tracks aan en keys invoeren?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -309,10 +312,14 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
+"Audio tracks kunnen enkel verwijzen naar nodes van het type:\n"
+"-AudioStreamPlayer\n"
+"-AudioStreamPlayer2D\n"
+"-AudioStreamPlayer3D"
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
+msgstr "Animatie tracks kunnen enkel verwijzen naar AnimatiePlayer nodes."
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
@@ -320,33 +327,31 @@ msgstr "Een animatiespeler kan zichzelf niet animeren, alleen andere spelers."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
-msgstr ""
+msgstr "Niet mogelijk om een nieuwe track toe te voegen zonder een root"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a key."
-msgstr ""
+msgstr "Track path is niet geldig, dus kan geen key toevoegen."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
+msgstr "Track is niet van het type Spatial, kan geen key invoegen"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
-msgstr ""
+msgstr "Track path is niet geldig, dus kan geen methode key toevoegen."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Method not found in object: "
-msgstr "VariableGet niet gevonden in script: "
+msgstr "Methode niet gevonden in object "
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
msgstr "Anim Verplaats Keys"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Clipboard is empty"
-msgstr "Bronnen klembord is leeg!"
+msgstr "Klembord is leeg"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
@@ -356,14 +361,16 @@ msgstr "Anim Schaal Keys"
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
+"Deze optie is nu niet mogelijk bij Bezier bewerken omdat slechts een spoor "
+"aanwezig is."
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
-msgstr ""
+msgstr "Toon alleen sporen die horen bij de geselecteerde node in de boom."
#: editor/animation_track_editor.cpp
msgid "Group tracks by node or display them as plain list."
-msgstr ""
+msgstr "Sporen weergeven op basis van nodes of als lijst."
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -371,9 +378,8 @@ msgid "Snap (s): "
msgstr "Stap(pen):"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation step value."
-msgstr "Animatie boom is geldig."
+msgstr "Animatie stap waarde."
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -385,19 +391,16 @@ msgid "Edit"
msgstr "Bewerken"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "AnimatieBoom"
+msgstr "Animatie eigenschappen."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Copy Tracks"
-msgstr "Kopieer Parameters"
+msgstr "Kopieer sporen"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Paste Tracks"
-msgstr "Plak Parameters"
+msgstr "Plak sporen"
#: editor/animation_track_editor.cpp
msgid "Scale Selection"
@@ -416,9 +419,8 @@ msgid "Duplicate Transposed"
msgstr "Dupliceer Getransponeerde"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
-msgstr "Geselecteerde Verwijderen"
+msgstr "Verwijder Selectie"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -440,11 +442,11 @@ msgstr "Animatie Opschonen"
#: editor/animation_track_editor.cpp
msgid "Pick the node that will be animated:"
-msgstr ""
+msgstr "Kies de node die geanimeerd zal worden:"
#: editor/animation_track_editor.cpp
msgid "Use Bezier Curves"
-msgstr ""
+msgstr "Gebruik Bezier Curves"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -452,11 +454,11 @@ msgstr "Anim. Optimalisator"
#: editor/animation_track_editor.cpp
msgid "Max. Linear Error:"
-msgstr "Max. Lineair Error:"
+msgstr "Max. Lineaire Fout:"
#: editor/animation_track_editor.cpp
msgid "Max. Angular Error:"
-msgstr "Max. Hoekig Error:"
+msgstr "Max. Fout in hoek:"
#: editor/animation_track_editor.cpp
msgid "Max Optimizable Angle:"
@@ -468,11 +470,11 @@ msgstr "Optimaliseren"
#: editor/animation_track_editor.cpp
msgid "Remove invalid keys"
-msgstr "Verwijder ongeldige keys"
+msgstr "Verwijder ongeldige sleutels"
#: editor/animation_track_editor.cpp
msgid "Remove unresolved and empty tracks"
-msgstr "Verwijder onopgeloste en lege tracks"
+msgstr "Verwijder onopgeloste en lege sporen"
#: editor/animation_track_editor.cpp
msgid "Clean-up all animations"
@@ -492,7 +494,7 @@ msgstr "Schaal Ratio:"
#: editor/animation_track_editor.cpp
msgid "Select tracks to copy:"
-msgstr ""
+msgstr "Selecteer sporen om te kopieren:"
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -504,7 +506,7 @@ msgstr "Kopiëren"
#: editor/array_property_edit.cpp
msgid "Resize Array"
-msgstr "Array van Grootte Veranderen"
+msgstr "Array Grootte Wijzigen"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
@@ -524,7 +526,7 @@ msgstr "Regelnummer:"
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "No Matches"
-msgstr "Geen Matches"
+msgstr "Geen Overeenkomsten"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
@@ -550,26 +552,30 @@ msgstr "Alle Vervangen"
msgid "Selection Only"
msgstr "Alleen Selectie"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Inzoomen"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Uitzoomen"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr "Reset Zoom"
+msgstr "Initialiseer Zoom"
#: editor/code_editor.cpp
msgid "Warnings:"
-msgstr ""
+msgstr "Waarschuwingen:"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Inzoomen"
+msgid "Font Size:"
+msgstr "Vooraanzicht"
#: editor/code_editor.cpp
msgid "Line:"
@@ -581,15 +587,15 @@ msgstr "Kolom:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr "Methode in target Node moet gespecificeerd worden!"
+msgstr "Methode in doel Node moet gespecificeerd worden!"
#: editor/connections_dialog.cpp
msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
-"Target methode niet gevonden! Specificeer een geldige methode of koppel een "
-"script aan de target Node."
+"Doel methode niet gevonden! Specificeer een geldige methode of koppel een "
+"script aan de doel Node."
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
@@ -675,19 +681,17 @@ msgid "Disconnect"
msgstr "Losmaken"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect Signal: "
-msgstr "Signaal aan het Verbinden:"
+msgstr "Verbind met Signaal: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection: "
-msgstr "Verbindingsfout"
+msgstr "Verbinding bewerken: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Weet je zeker dat je meerdere projecten wilt uitvoeren?"
+msgstr ""
+"Weet je zeker dat je alle verbindingen met signaal \"%s\" wilt verwijderen?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -696,6 +700,7 @@ msgstr "Signalen"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
msgstr ""
+"Weet je zeker dat je alle verbindingen naar dit signaal wilt verwijderen?"
#: editor/connections_dialog.cpp
#, fuzzy
@@ -708,9 +713,8 @@ msgid "Edit..."
msgstr "Bewerken"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Methodes"
+msgstr "Ga Naar Methode"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -723,7 +727,7 @@ msgstr "Wijzig"
#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Maake Nieuwe %s"
+msgstr "Maak Nieuwe %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -735,8 +739,8 @@ msgid "Recent:"
msgstr "Recente:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Zoeken:"
@@ -767,7 +771,7 @@ msgid ""
"Changes will not take effect unless reloaded."
msgstr ""
"Scene '%s' wordt op dit moment gewijzigd.\n"
-"Wijzigingen hebben geen effect tenzij ze herladen worden."
+"Wijzigingen hebben geen effect tenzij de scene herladen worden."
#: editor/dependency_editor.cpp
msgid ""
@@ -784,11 +788,10 @@ msgstr "Afhankelijkheden"
#: editor/dependency_editor.cpp
msgid "Resource"
-msgstr "Resource"
+msgstr "Bron"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pad"
@@ -798,7 +801,7 @@ msgstr "Afhankelijkheden:"
#: editor/dependency_editor.cpp
msgid "Fix Broken"
-msgstr "Gebroken Repareren"
+msgstr "Repareer defecten"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
@@ -1253,8 +1256,7 @@ msgid "Node Name:"
msgstr "Node Naam:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Naam"
@@ -1737,6 +1739,12 @@ msgstr "Deze operatie kan niet gedaan worden zonder boomwortel."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2183,7 +2191,7 @@ msgid "Undo"
msgstr "Ongedaan Maken"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Opnieuw"
@@ -2207,7 +2215,7 @@ msgstr "Projectinstellingen"
msgid "Export"
msgstr "Exporteren"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Gereedschappen"
@@ -2646,6 +2654,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2662,8 +2676,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Kies een Aanzicht portaal"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3098,7 +3111,7 @@ msgstr "Dupliceren..."
msgid "Move To..."
msgstr "Verplaats Naar..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Open Script Snel..."
@@ -3243,7 +3256,7 @@ msgstr "FOUTMELDING: Animatie naam bestaat al!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ongeldige naam."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3501,14 +3514,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Creëer Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Bewerk Poly"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3516,25 +3529,28 @@ msgid "Insert Point"
msgstr "Punt Toevoegen"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Bewerk Poly (Verwijder punt)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Verwijder Poly en punt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Begin een nieuwe polygoon"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Verwijder punten"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Bewerk bestaande polygoon:\n"
"LMK: Verplaats punt.\n"
@@ -3542,8 +3558,10 @@ msgstr ""
"RMK: Wis punt."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Verwijder punten"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "RMB: Verwijder Punt."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3589,17 +3607,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Verwijder punten"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Verwijder Punt."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Beweeg Punt"
@@ -3677,7 +3684,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Node Toevoegen"
@@ -4230,7 +4236,7 @@ msgstr "Alle"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sorteren:"
@@ -4391,21 +4397,19 @@ msgid "Paste Pose"
msgstr "Plak Houding"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Uitzoomen"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Uitzoomen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Inzoomen"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Selecteer Modus"
@@ -4675,8 +4679,17 @@ msgstr ""
"Sleep & laat los + Alt : Verander node type"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Maak Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Creëer Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Bewerk Poly"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Bewerk Poly (Verwijder punt)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4779,37 +4792,9 @@ msgid "Item List Editor"
msgstr "Item Lijst Editor"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Geen OccluderPolygon2D resource op deze node.\n"
-"Creëer en wijs één toe?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Creëer Occluder Polygon"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Creëer een compleet nieuwe polygon."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Wijzig bestaande polygon:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Verplaats Punt."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Splits Segment."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Verwijder Punt."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh is leeg!"
@@ -5188,6 +5173,11 @@ msgid "Add Point to Curve"
msgstr "Voeg Punt toe aan Curve"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Sluit Curve"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Verplaats Punt in Curve"
@@ -5215,6 +5205,11 @@ msgid "Click: Add Point"
msgstr "Klik: Voeg Punt Toe"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Splits Segment (in curve)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Rechter Klik: Verwijder Punt"
@@ -5230,11 +5225,6 @@ msgstr "Voeg Punt Toe (in lege ruimte)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Splits Segment (in curve)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Verwijder Punt"
@@ -5291,6 +5281,10 @@ msgstr "Verwijder Uit-Controle Punt"
msgid "Remove In-Control Point"
msgstr "Verwijder In-Controle Punt"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Splits Segment (in curve)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5303,10 +5297,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Laat Botten Zien"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Creëer UV Map"
@@ -5348,10 +5348,20 @@ msgid "Transform UV Map"
msgstr "Transformeer UV Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Transformatie Type"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV Editor"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV Editor"
@@ -5376,11 +5386,7 @@ msgstr "Maak Botten"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Creëer Poly"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Beweeg Punt"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5408,20 +5414,20 @@ msgid "Scale Polygon"
msgstr "Schaal Polygon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Selecteer een map om te scannen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5571,19 +5577,23 @@ msgid "Error saving file!"
msgstr "Error bij het opslaan van TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Fout bij het opslaan van het thema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Fout bij het opslaan"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Fout bij import van thema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Fout bij importeren"
#: editor/plugins/script_editor_plugin.cpp
@@ -5606,6 +5616,14 @@ msgid "Import Theme"
msgstr "Importeer Thema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Fout bij het opslaan van het thema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Fout bij het opslaan"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Thema Opslaan Als..."
@@ -5647,8 +5665,8 @@ msgstr "Bestand"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Bekijk Bestanden"
+msgid "Open..."
+msgstr "Openen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5677,6 +5695,11 @@ msgid "Theme"
msgstr "Thema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importeer Thema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Herlaad Thema"
@@ -5685,10 +5708,6 @@ msgid "Save Theme"
msgstr "Thema Opslaan"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Thema Opslaan Als"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Sluit Docs"
@@ -5798,6 +5817,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Ga Naar Functie..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Alleen bronnen uit bestandssysteem kunnen gedropt worden."
@@ -5831,10 +5854,6 @@ msgstr "Maak Hoofdletters"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6551,11 +6570,18 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Stel Handgreep In"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Snap Modus:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Geen>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6802,12 +6828,12 @@ msgstr "Transformatie"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Voeg Node(s) Toe Uit Tree"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Verwijder Signaal"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6819,13 +6845,34 @@ msgid "Merge from Scene"
msgstr "Vervoeg vanuit Scene"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Plak Animatie"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "RMB: Verwijder Punt."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Creëer een compleet nieuwe polygon."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6855,11 +6902,9 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Verwijder geselecteerde bestanden?"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6869,6 +6914,19 @@ msgid ""
msgstr "Selecteer zojuist bewerkte sub-tegel."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Verwijder punten"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr "Selecteer een sub-tegel om zijn prioriteit te veranderen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6884,12 +6942,19 @@ msgstr "Selecteer een sub-tegel om zijn prioriteit te veranderen."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Selecteer een sub-tegel om zijn prioriteit te veranderen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Deze operatie kan niet uitgevoerd worden zonder scene."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6909,6 +6974,11 @@ msgstr "Rechts"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Node Toevoegen"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Shader"
@@ -6948,7 +7018,7 @@ msgstr "Toevoegen..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Project Exporteren"
#: editor/project_export.cpp
@@ -7105,9 +7175,8 @@ msgid "Import Existing Project"
msgstr "Importeer bestaand project"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Import & Edit"
-msgstr "Importeren"
+msgstr "Importeer & Bewerk"
#: editor/project_manager.cpp
msgid "Create New Project"
@@ -7123,9 +7192,8 @@ msgid "Install Project:"
msgstr "Installeer project:"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Install & Edit"
-msgstr "Installeer"
+msgstr "Installeer & Bewerk"
#: editor/project_manager.cpp
msgid "Project Name:"
@@ -7141,9 +7209,8 @@ msgid "Project Path:"
msgstr "Projectpad:"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Project Installation Path:"
-msgstr "Projectpad:"
+msgstr "Project Installatie Path:"
#: editor/project_manager.cpp
msgid "Browse"
@@ -7154,9 +7221,8 @@ msgid "Unnamed Project"
msgstr "Naamloos Project"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Can't open project"
-msgstr "Verbind..."
+msgstr "Kan project niet openen"
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
@@ -8074,7 +8140,7 @@ msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
-msgstr ""
+msgstr "Toggle Zichtbaarheid"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -8088,7 +8154,7 @@ msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Rename Node"
-msgstr ""
+msgstr "Hernoem Node"
#: editor/scene_tree_editor.cpp
msgid "Scene Tree (Nodes):"
@@ -8100,73 +8166,67 @@ msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
-msgstr ""
+msgstr "Selecteer een Node"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Error bij het laden van lettertype."
+msgstr "Error bij het laden van sjabloon '%s'"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "Map kon niet gemaakt worden."
+msgstr "Fout - Kon geen script aanmaken in bestandssysteem."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
-msgstr ""
+msgstr "Fout bij het laden script van %s"
#: editor/script_create_dialog.cpp
msgid "N/A"
-msgstr ""
+msgstr "Niet van toepassing"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Open Script/Choose Location"
-msgstr "Open Script Bewerker"
+msgstr "Open Script/Kies Locatie"
#: editor/script_create_dialog.cpp
msgid "Path is empty"
-msgstr ""
+msgstr "Path is leeg"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Mesh is leeg!"
+msgstr "Bestandsnaam is leeg"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
-msgstr ""
+msgstr "Path is niet lokaal"
#: editor/script_create_dialog.cpp
msgid "Invalid base path"
-msgstr ""
+msgstr "Ongeldig basis path"
#: editor/script_create_dialog.cpp
msgid "Directory of the same name exists"
-msgstr ""
+msgstr "Directory met dezelfde naam bestaat al"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "File exists, will be reused"
-msgstr "Bestand Bestaat, Overschrijven?"
+msgstr "Bestand Bestaat, zal herbruikt worden"
#: editor/script_create_dialog.cpp
msgid "Invalid extension"
-msgstr ""
+msgstr "Ongeldige extensie"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Verkeerde extensie gekozen"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Ongeldig Pad."
+msgstr "Ongeldig Path"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
-msgstr ""
+msgstr "Ongeldige klassenaam"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -8175,47 +8235,43 @@ msgstr "Ongeldige index eigenschap naam."
#: editor/script_create_dialog.cpp
msgid "Script valid"
-msgstr ""
+msgstr "Script geldig"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "Toegestaan: a-z, A-Z, 0-9 en _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Ingebouwd script (in scene bestand)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Subscriptie Maken"
+msgstr "Maak nieuw script bestand"
#: editor/script_create_dialog.cpp
msgid "Load existing script file"
-msgstr ""
+msgstr "Laad bestaand script"
#: editor/script_create_dialog.cpp
msgid "Language"
-msgstr ""
+msgstr "Taal"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Erft:"
+msgstr "Erft"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Klasse:"
+msgstr "Klasse Naam"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Verwijder Selectie"
+msgstr "Sjabloon"
#: editor/script_create_dialog.cpp
msgid "Built-in Script"
-msgstr ""
+msgstr "Ingebouwd Script"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
@@ -8240,24 +8296,23 @@ msgstr ""
#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
-msgstr ""
+msgstr "Fouten"
#: editor/script_editor_debugger.cpp
msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Copy Error"
-msgstr "Laadfouten"
+msgstr "Kopieer Fout"
#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
-msgstr ""
+msgstr "Inspecteer vorige instantie"
#: editor/script_editor_debugger.cpp
msgid "Inspect Next Instance"
-msgstr ""
+msgstr "Inspecteer Volgende Instantie"
#: editor/script_editor_debugger.cpp
msgid "Stack Frames"
@@ -8285,7 +8340,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Total:"
-msgstr ""
+msgstr "Totaal:"
#: editor/script_editor_debugger.cpp
msgid "Video Mem"
@@ -8297,7 +8352,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Type"
-msgstr ""
+msgstr "Type"
#: editor/script_editor_debugger.cpp
msgid "Format"
@@ -8305,7 +8360,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Usage"
-msgstr ""
+msgstr "Gebruik"
#: editor/script_editor_debugger.cpp
msgid "Misc"
@@ -8329,7 +8384,7 @@ msgstr ""
#: editor/settings_config_dialog.cpp
msgid "Shortcuts"
-msgstr ""
+msgstr "Snelkoppelingen"
#: editor/settings_config_dialog.cpp
msgid "Binding"
@@ -8345,7 +8400,7 @@ msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
-msgstr ""
+msgstr "Wijzig Camera FOV"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera Size"
@@ -8365,7 +8420,7 @@ msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Sphere Shape Radius"
-msgstr ""
+msgstr "Wijzig Sphere Vorm Straal"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Box Shape Extents"
@@ -8373,11 +8428,11 @@ msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Radius"
-msgstr ""
+msgstr "Wijzig Capsule Vorm Straal"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Height"
-msgstr ""
+msgstr "Wijzig Capsule Vorm Hoogte"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Cylinder Shape Radius"
@@ -8389,43 +8444,39 @@ msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
-msgstr ""
+msgstr "Wijzig Ray Vorm Lengte"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Radius"
-msgstr "Wijzig Meng Tijd"
+msgstr "Wijzig Cylinder Straal"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Height"
-msgstr "Wijzig Meng Tijd"
+msgstr "Wijzig Cylinder Hoogte"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Torus Inner Radius"
-msgstr "Wijzig Ankers en Marges"
+msgstr "Wijzig Torus Binnenste Straal"
#: modules/csg/csg_gizmos.cpp
msgid "Change Torus Outer Radius"
-msgstr ""
+msgstr "Wijzig Torus Buitenste Straal"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Selecteer de dynamische bibliotheek voor deze ingave"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Selecteer afhankelijkheden van de bibliotheek voor deze ingave"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Verwijder Signaal"
+msgstr "Verwijder huidige ingave"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Dubbelklikken om een nieuwe ingave te creëren"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
@@ -8445,26 +8496,27 @@ msgstr ""
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "GDNativeLibrary"
-msgstr ""
+msgstr "GDInheemsBibliotheek"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
-msgstr ""
+msgstr "Bibliotheek"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Status"
-msgstr ""
+msgstr "Status"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Libraries: "
-msgstr ""
+msgstr "Bibliotheken: "
#: modules/gdnative/register_types.cpp
msgid "GDNative"
-msgstr ""
+msgstr "GDInheems"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "step argument is nul!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8565,27 +8617,27 @@ msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Bewerk X As"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Bewerk Y As"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Bewerk Z As"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate X"
-msgstr ""
+msgstr "Cursor Roteer X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Y"
-msgstr ""
+msgstr "Cursor Roteer Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Z"
-msgstr ""
+msgstr "Cursor Roteer Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
@@ -9403,7 +9455,7 @@ msgstr ""
"alsjeblieft een vorm resource voor deze!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9452,7 +9504,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9551,6 +9605,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Animatie boom is ongeldig."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Raw-modus"
@@ -9567,6 +9625,10 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Bevestig Alsjeblieft..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9634,11 +9696,6 @@ msgstr "Ongeldige lettertype grootte."
msgid "Input"
msgstr "Voeg invoer toe"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Geen>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9656,6 +9713,56 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Creëer Poly"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Begin een nieuwe polygoon"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Uitzoomen"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Inzoomen"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Maak Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Geen OccluderPolygon2D resource op deze node.\n"
+#~ "Creëer en wijs één toe?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Wijzig bestaande polygon:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Verplaats Punt."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Splits Segment."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Verwijder Punt."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Bekijk Bestanden"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Thema Opslaan Als"
+
+#~ msgid "<None>"
+#~ msgstr "<Geen>"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Inzoomen"
+
#~ msgid "Class List:"
#~ msgstr "Klasse Lijst:"
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index a068bc8123..80bd81afb3 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -30,16 +30,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-10 20:07+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -274,7 +276,6 @@ msgstr "Utworzyć %d NOWYCH ścieżek i wstawić klucze?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -347,7 +348,6 @@ msgid "Method not found in object: "
msgstr "Metoda nie znaleziona w obiekcie: "
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Move Keys"
msgstr "Przemieść klucze animacji"
@@ -423,12 +423,10 @@ msgid "Delete Selection"
msgstr "Usuń zaznaczone"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Przejdź do następnego kroku"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Przejdź do poprzedniego kroku"
@@ -552,15 +550,19 @@ msgstr "ZastÄ…p wszystkie"
msgid "Selection Only"
msgstr "Tylko zaznaczenie"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Przybliż"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Oddal"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Wyzeruj przybliżenie"
@@ -569,8 +571,8 @@ msgid "Warnings:"
msgstr "Ostrzeżenia:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Powiększenie:"
+msgid "Font Size:"
+msgstr "Rozmiar czcionki:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -683,9 +685,8 @@ msgid "Edit Connection: "
msgstr "Edytuj połączenie: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Na pewno chcesz usunąć wszystkie połączenia z tego sygnału?"
+msgstr "Na pewno chcesz usunąć wszystkie połączenia z sygnału \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -730,8 +731,8 @@ msgid "Recent:"
msgstr "Ostatnie:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Szukaj:"
@@ -782,8 +783,7 @@ msgid "Resource"
msgstr "Zasoby"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ścieżka"
@@ -839,9 +839,8 @@ msgid "Error loading:"
msgstr "BÅ‚Ä…d Å‚adowania:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "Scena nie została wczytana z powodu brakujących zależności:"
+msgstr "Wczytywanie nieudane z powodu brakujących zależności:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1244,8 +1243,7 @@ msgid "Node Name:"
msgstr "Nazwa węzła:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nazwa"
@@ -1323,24 +1321,21 @@ msgid "File Exists, Overwrite?"
msgstr "Plik istnieje, nadpisać?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Wybierz ten Folder"
+msgstr "Wybierz ten folder"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
-msgstr "Skopiuj Ścieżkę"
+msgstr "Skopiuj ścieżkę"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "Otwórz w menadżerze plików"
+msgstr "Otwórz w menedżerze plików"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Pokaż w menadżerze plików"
+msgstr "Pokaż w menedżerze plików"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1483,19 +1478,16 @@ msgid "Methods"
msgstr "Metody"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Metody"
+msgstr "Metody:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Właściwości"
+msgstr "Właściwości motywu"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Właściwości:"
+msgstr "Właściwości motywu:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1522,14 +1514,12 @@ msgid "Constants:"
msgstr "Stałe:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Opis"
+msgstr "Opis klasy"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Opis:"
+msgstr "Opis klasy:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1546,14 +1536,12 @@ msgstr ""
"jakiÅ›[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Opis właściwości:"
+msgstr "Opisy właściwości"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "Opis właściwości:"
+msgstr "Opisy właściwości:"
#: editor/editor_help.cpp
msgid ""
@@ -1564,14 +1552,12 @@ msgstr ""
"$url]wysyłając ją[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Opis metody:"
+msgstr "Opisy metod"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Opis metody:"
+msgstr "Opisy metod:"
#: editor/editor_help.cpp
msgid ""
@@ -1587,49 +1573,40 @@ msgid "Search Help"
msgstr "Wyszukaj w Pomocy"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Widok normalny"
+msgstr "Pokaż wszystko"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Klasy"
+msgstr "Tylko klasy"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Metody"
+msgstr "Tylko metody"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Sygnały"
+msgstr "Tylko sygnały"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Stałe"
+msgstr "Tylko stałe"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Właściwości"
+msgstr "Tylko właściwości"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Właściwości"
+msgstr "Tylko właściwości motywu"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Członkowie"
+msgstr "Typ członka"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Klasa:"
+msgstr "Klasa"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1728,6 +1705,12 @@ msgstr "Ta operacja nie może zostać wykonana bez sceny."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1736,7 +1719,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Nie można nadpisać sceny, która wciąż jest otwarta!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1992,13 +1975,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Nie można załadować skryptu dodatku z ścieżki: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Nie można załadować skryptu dodatku z ścieżki: '%s' Skrypt nie jest w trybie "
-"narzędzia (tool)."
+"Nie można załadować skryptu dodatku ze ścieżki: '%s' W kodzie znajduje się "
+"błąd, sprawdź składnię."
#: editor/editor_node.cpp
msgid ""
@@ -2054,7 +2036,6 @@ msgstr "Domyślny"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Pokaż w systemie plików"
@@ -2139,7 +2120,6 @@ msgid "Save Scene"
msgstr "Zapisz scenÄ™"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Zapisz wszystkie sceny"
@@ -2169,7 +2149,7 @@ msgid "Undo"
msgstr "Cofnij"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Ponów"
@@ -2193,7 +2173,7 @@ msgstr "Ustawienia projektu"
msgid "Export"
msgstr "Eksport"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Narzędzia"
@@ -2620,9 +2600,17 @@ msgstr "Przypisz..."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Nie można utworzyć ViewportTexture na zasobach zapisanych jako plik.\n"
+"Zasób musi należeć do sceny."
#: editor/editor_properties.cpp
msgid ""
@@ -2631,13 +2619,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Nie można utworzyć ViewportTexture na tym zasobie, ponieważ nie jest "
+"ustawiony jako lokalny dla sceny.\n"
+"Włącz mu właściwość \"lokalny dla sceny\" (i wszystkim zasobom, które go "
+"zawierają, aż do węzła)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Wybierz Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Nowy skrypt"
@@ -2948,9 +2939,8 @@ msgstr ""
"typu plików nie będzie zapisana!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Ulubione:"
+msgstr "Ulubione"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3035,14 +3025,12 @@ msgid "Instance"
msgstr "Instancja"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Ulubione:"
+msgstr "Dodaj do ulubionych"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Usuń z Grupy"
+msgstr "Usuń z ulubionych"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3062,9 +3050,9 @@ msgstr "Duplikuj..."
#: editor/filesystem_dock.cpp
msgid "Move To..."
-msgstr "PrzenieÅ› Do..."
+msgstr "PrzenieÅ› do..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Nowy skrypt..."
@@ -3073,14 +3061,12 @@ msgid "New Resource..."
msgstr "Nowy zasób..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "Rozwiń foldery"
+msgstr "Rozwiń wszystko"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "Zwiń foldery"
+msgstr "Zwiń wszystko"
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3102,9 +3088,8 @@ msgid "Re-Scan Filesystem"
msgstr "Przeskanuj system plików ponownie"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Przełącz tryby"
+msgstr "Przełącz tryb podziału"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3112,7 +3097,7 @@ msgstr "Przeszukaj pliki"
#: editor/filesystem_dock.cpp
msgid "Instance the selected scene(s) as child of the selected node."
-msgstr "Utwórz instancje wybranej sceny/scen jako dziecko wybranego węzła."
+msgstr "Utwórz instancję wybranej sceny/scen jako dziecko wybranego węzła."
#: editor/filesystem_dock.cpp
msgid ""
@@ -3139,24 +3124,20 @@ msgid "Create Script"
msgstr "Utwórz Skrypt"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Znajdź w plikach"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Znajdź: "
+msgstr "Znajdź:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Folder: "
+msgstr "Folder:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtry"
+msgstr "Filtry:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3196,7 +3177,8 @@ msgid "Group name already exists."
msgstr "Nazwa grupy już istnieje."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "niewłaściwa nazwa grupy."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3335,12 +3317,10 @@ msgid "Failed to load resource."
msgstr "Nie udało się wczytać zasobu."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Rozwiń wszystkie właściwości"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Zwiń wszystkie właściwości"
@@ -3358,7 +3338,6 @@ msgid "Paste Params"
msgstr "Wklej parametry"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Edit Resource Clipboard"
msgstr "Edytuj schowek zasobów"
@@ -3447,14 +3426,13 @@ msgid "Activate now?"
msgstr "Aktywować teraz?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Utwórz Polygon"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
+msgstr "Utwórz wielokąt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Edytuj wielokÄ…t"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3462,25 +3440,27 @@ msgid "Insert Point"
msgstr "Wstaw punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Edytuj wielokąt (usuń punkty)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Usuń wielokąt i punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Utwórz nowy wielokąt"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Utwórz punkty."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Edytować istniejący wielokąt:\n"
"LMB: PrzenieÅ› punkt.\n"
@@ -3488,8 +3468,9 @@ msgstr ""
"RMB: Usuwanie punktu."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Usuwanie punktów"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Usuń punkty."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3537,15 +3518,6 @@ msgstr "Wybierz i przesuń punkty, utwórz punkty używając PPM."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Utwórz punkty."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Usuń punkty."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Punkt"
@@ -3627,7 +3599,6 @@ msgstr ""
"uzyskać nazw ścieżek."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Dodaj węzeł..."
@@ -4038,7 +4009,6 @@ msgid "TimeScale Node"
msgstr "Węzeł Skalowania Czasu"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#, fuzzy
msgid "TimeSeek Node"
msgstr "Węzeł TimeSeek"
@@ -4170,7 +4140,7 @@ msgstr "Wszystko"
msgid "Plugins"
msgstr "Wtyczki"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sortuj:"
@@ -4301,9 +4271,8 @@ msgid "Resize CanvasItem"
msgstr "Zmień rozmiar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Obróć CanvasItem"
+msgstr "Skaluj CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4326,18 +4295,19 @@ msgid "Paste Pose"
msgstr "Wklej pozÄ™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Pomniejsz"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Wyzeruj powiększenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Powiększ"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Tryb zaznaczenia"
@@ -4368,9 +4338,8 @@ msgid "Rotate Mode"
msgstr "Tryb Rotacji"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Tryb skalowania (R)"
+msgstr "Tryb skalowania"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4469,9 +4438,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Odblokuj selekcję węzłów podrzędnych."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Szkielet..."
+msgstr "Opcje szkieletu"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4525,7 +4493,7 @@ msgstr "Pokaż widok"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Pokaż ikony grup i blokady"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4598,8 +4566,17 @@ msgstr ""
"Przeciągnij i upuść + Alt: Zmień typ węzła"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Stwórz Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Utwórz wielokąt"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Edytuj wielokÄ…t"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Edytuj wielokąt (usuń punkty)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4700,37 +4677,9 @@ msgid "Item List Editor"
msgstr "Edytor listy elementów"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Brak zasobu OccluderPolygon2D w tym węźle.\n"
-"Stworzyć i przypisać nowy?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Stwórz Occluder Polygon"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Utwórz nowy wielokąt."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Edytuj istniejÄ…cy polygon:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Przesuń Punkt."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + LPM: Podziału segmentu."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Wymaż Punkt."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Siatka jest pusta!"
@@ -4814,7 +4763,6 @@ msgid "Create Trimesh Collision Sibling"
msgstr "Utwórz trójsiatkę sąsiednich kolizji"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Create Convex Collision Sibling"
msgstr "Utwórz wypukłego sąsiada kolizji"
@@ -4968,9 +4916,8 @@ msgid "Create Navigation Polygon"
msgstr "Utwórz wielokąt nawigacyjny"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Wygeneruj prostokąta widzialności"
+msgstr "Generowanie prostokąta widzialności"
#: editor/plugins/particles_2d_editor_plugin.cpp
#, fuzzy
@@ -5105,6 +5052,11 @@ msgid "Add Point to Curve"
msgstr "Dodaj punkt do krzywej"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Zamknij krzywÄ…"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "PrzenieÅ› punkt krzywej"
@@ -5132,6 +5084,11 @@ msgid "Click: Add Point"
msgstr "Klik: Dodaj Punkt"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Podziel Segment (na krzywej)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Prawy Klik: Usuń Punkt"
@@ -5147,11 +5104,6 @@ msgstr "Dodaj Punkt (w pustym miejscu)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Podziel Segment (na krzywej)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Usuń Punkt"
@@ -5212,6 +5164,10 @@ msgstr "Usuń punkt ścieżki"
msgid "Remove In-Control Point"
msgstr "Usuń punkt ścieżki"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Podziel Segment (na krzywej)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Przesuń złącze"
@@ -5219,57 +5175,69 @@ msgstr "Przesuń złącze"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
+msgstr "Właściwość skeleton węzła Polygon2D nie wskazuje na węzeł Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
-msgstr "Pokaż kości"
+msgid "Sync Bones"
+msgstr "Synchronizuj kości"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Utwórz Mapę UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Create Polygon & UV"
-msgstr "Utwórz Polygon"
+msgstr "Utwórz wielokąt i UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Split point with itself."
-msgstr ""
+msgstr "Podziel punkt ze sobÄ…."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Split can't form an existing edge."
-msgstr ""
+msgstr "Podział nie może uformować istniejącej krawędzi."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split already exists."
-msgstr "Akcja %s już istnieje!"
+msgstr "Podział już istnieje."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Split"
-msgstr "Dodaj punkt"
+msgstr "Dodaj podział"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Invalid Split: "
-msgstr "Niepoprawna ścieżka!"
+msgstr "Niepoprawny podział: "
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Split"
-msgstr "Usuń punkt"
+msgstr "Usuń podział"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
msgstr "Przekształć Mapę UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
-msgstr ""
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Typ przekształcenia"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
+msgstr "Maluj wagi kości"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "WielokÄ…t 2D UV Edytor"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
@@ -5277,30 +5245,23 @@ msgstr "WielokÄ…t 2D UV Edytor"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV"
-msgstr ""
+msgstr "UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Poly"
-msgstr "Edytuj wielokÄ…t"
+msgstr "WielokÄ…t"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Splits"
-msgstr "Podziel Ścieżkę"
+msgstr "Podziały"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Bones"
-msgstr "Utwórz Kości"
+msgstr "Kości"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Utwórz Polygon"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Przesuń Punkt"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5328,25 +5289,28 @@ msgid "Scale Polygon"
msgstr "Skaluj WielokÄ…t"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
-msgstr ""
+#, fuzzy
+msgid "Connect two points to make a split."
+msgstr "Połącz dwa punkty, by utworzyć podział"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
-msgstr "Najpierw wybierz ustawienie z listy!"
+msgid "Select a split to erase it."
+msgstr "Wybierz podział, by go usunąć"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
-msgstr ""
+#, fuzzy
+msgid "Paint weights with specified intensity."
+msgstr "Maluj wagi z podaną intensywnością"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
-msgstr ""
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
+msgstr "Odmaluj wagi z podaną intensywnością"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Radius:"
-msgstr ""
+msgstr "Promień:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
@@ -5361,9 +5325,8 @@ msgid "Clear UV"
msgstr "Wyczyść UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Grid Settings"
-msgstr "Ustawienia GridMap"
+msgstr "Ustawienia siatki"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
@@ -5374,34 +5337,28 @@ msgid "Grid"
msgstr "Siatka"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Configure Grid:"
-msgstr "Konfiguruj przyciÄ…ganie"
+msgstr "Konfiguruj siatkÄ™:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Grid Offset X:"
-msgstr "Offset siatki:"
+msgstr "Przesunięcie X siatki:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Grid Offset Y:"
-msgstr "Offset siatki:"
+msgstr "Przesunięcie Y siatki:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Grid Step X:"
-msgstr "Krok siatki:"
+msgstr "Krok X siatki:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Grid Step Y:"
-msgstr "Krok siatki:"
+msgstr "Krok Y siatki:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Sync Bones to Polygon"
-msgstr "Skaluj WielokÄ…t"
+msgstr "Synchronizuj kości z wielokątem"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "ERROR: Couldn't load resource!"
@@ -5450,13 +5407,12 @@ msgid "Load Resource"
msgstr "Wczytaj Zasób"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
msgid "ResourcePreloader"
-msgstr "Ścieżka zasobu"
+msgstr "Wstępny ładowacz zasobów"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
+msgstr "Węzeł AnimationTree nie ma ustawionej ścieżki do AnimationPlayer"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "Path to AnimationPlayer is invalid"
@@ -5471,61 +5427,66 @@ msgid "Close and save changes?"
msgstr "Zamknąć i zapisać zmiany?"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error writing TextFile:"
-msgstr "BÅ‚Ä…d wczytywania obrazu:"
+msgstr "BÅ‚Ä…d pisania pliku tekstowego:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "Nie można wczytać obrazu"
+msgstr "Błąd: nie udało się wczytać pliku."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error could not load file."
-msgstr "Nie można wczytać obrazu"
+msgstr "Błąd nie udało się wczytać pliku."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error saving file!"
-msgstr "BÅ‚Ä…d podczas zapisywania TileSet!"
+msgstr "BÅ‚Ä…d zapisywania pliku!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "BÅ‚Ä…d podczas zapisywania motywu"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "BÅ‚Ä…d zapisywania"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "BÅ‚Ä…d importowania motywu"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "BÅ‚Ä…d importowania"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "New TextFile..."
-msgstr "Utwórz katalog..."
+msgstr "Nowy plik tekstowy..."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open File"
msgstr "Otwórz plik"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Save File As..."
-msgstr "Zapisz jako..."
+msgstr "Zapisz plik jako..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
msgstr "Zaimportuj motyw"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "BÅ‚Ä…d podczas zapisywania motywu"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "BÅ‚Ä…d zapisywania"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Zapisz motyw jako..."
@@ -5536,12 +5497,11 @@ msgstr " Referencja klas"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
+msgstr "Przełącz alfabetyczne sortowanie listy metod."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort"
-msgstr "Sortuj:"
+msgstr "Sortuj"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
@@ -5569,8 +5529,8 @@ msgstr "Plik"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Pokaż pliki"
+msgid "Open..."
+msgstr "Otwórz"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5585,7 +5545,6 @@ msgid "Copy Script Path"
msgstr "Skopiuj ścieżkę skryptu"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Poprzedni plik"
@@ -5599,6 +5558,11 @@ msgid "Theme"
msgstr "Motyw"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Zaimportuj motyw"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Przeładuj motyw"
@@ -5607,10 +5571,6 @@ msgid "Save Theme"
msgstr "Zapisz motyw"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Zapisz motyw jako"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Zamknij pliki pomocy"
@@ -5657,9 +5617,8 @@ msgid "Keep Debugger Open"
msgstr "Pozostaw Debugger otwarty"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "Debugowanie z zewnętrznego edytora"
+msgstr "Debugowanie z zewnętrznym edytorem"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5702,32 +5661,32 @@ msgid "Debugger"
msgstr "Debugger"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
-msgstr "Wyszukaj w Pomocy"
+msgstr "Wyniki wyszukiwania"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Line"
-msgstr "Linia:"
+msgstr "Linia"
#: editor/plugins/script_text_editor.cpp
msgid "(ignore)"
-msgstr ""
+msgstr "(ignoruj)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Przejdź do funkcji..."
+msgstr "Przejdź do funkcji"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Standardowy"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Jedynie zasoby z systemu plików mogą zostać tu upuszczone."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Lookup Symbol"
-msgstr "Uzupełnij symbol"
+msgstr "Podejrzyj symbol"
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -5751,11 +5710,7 @@ msgstr "Wielkie litery na początku słów"
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
+msgstr "Podświetlacz składni"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
@@ -5808,12 +5763,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Przytnij końcowe spacje"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Zamień wcięcia na spacje"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Zamień wcięcia na tabulatory"
@@ -5824,38 +5777,33 @@ msgstr "Automatyczne wcięcie"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Toggle Breakpoint"
-msgstr "Przełącz pułapkę"
+msgstr "Przełącz punkt wstrzymania"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr "Usuń wszystkie pułapki"
+msgstr "Usuń wszystkie punkty wstrzymania"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
-msgstr "Przejdź do następnej pułapki"
+msgstr "Przejdź do następnego punktu wstrzymania"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
-msgstr "Przejdź do poprzedniej pułapki"
+msgstr "Przejdź do poprzedniego punktu wstrzymania"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
msgstr "Znajdź poprzedni"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
-msgstr "Filtrowanie plików..."
+msgstr "Znajdź w plikach..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Przejdź do funkcji..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Przejdź do linii..."
@@ -5869,40 +5817,35 @@ msgstr "Shader"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
+msgstr "Ten szkielet nie ma kości. Stwórz jakieś węzły potomne Bone2D."
#: editor/plugins/skeleton_2d_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton2D"
-msgstr "Szkielet..."
+msgstr "Szkielet 2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Make Rest Pose (From Bones)"
-msgstr ""
+msgstr "Utwórz pozę spoczynkową (z kości)"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Set Bones to Rest Pose"
-msgstr ""
+msgstr "Ustaw kości do pozy spoczynkowej"
#: editor/plugins/skeleton_editor_plugin.cpp
-#, fuzzy
msgid "Create physical bones"
-msgstr "Utwórz siatkę nawigacyjną (Navigation Mesh)"
+msgstr "Utwórz fizyczne kości"
#: editor/plugins/skeleton_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton"
-msgstr "Szkielet..."
+msgstr "Szkielet"
#: editor/plugins/skeleton_editor_plugin.cpp
-#, fuzzy
msgid "Create physical skeleton"
-msgstr "Utwórz solucję C#"
+msgstr "Utwórz fizyczny szkielet"
#: editor/plugins/skeleton_ik_editor_plugin.cpp
-#, fuzzy
msgid "Play IK"
-msgstr "Uruchom"
+msgstr "Odtwórz IK"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
@@ -5930,29 +5873,25 @@ msgstr "Transformacja osi Z."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Plane Transform."
-msgstr ""
+msgstr "Pokaż transformację płaszczyzny."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scaling: "
-msgstr "Skala:"
+msgstr "Skalowanie: "
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translating: "
-msgstr "TÅ‚umaczenia:"
+msgstr "Przesuwanie: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Obracanie o %s stopni."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Keying is disabled (no key inserted)."
msgstr "Kluczowanie jest wyłączone (nie wstawiono klucza)."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Animation Key Inserted."
msgstr "Wstawiono klucz animacji."
@@ -5962,15 +5901,13 @@ msgstr "Wysokość"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Odchylenie"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn"
msgstr "Narysowane obiekty"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
msgstr "Zmiany materiału"
@@ -5979,9 +5916,8 @@ msgid "Shader Changes"
msgstr "Zmiany Shadera"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Odśwież Zmiany"
+msgstr "Zmiany powierzchni"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
@@ -6052,9 +5988,8 @@ msgid "This operation requires a single selected node."
msgstr "Ta operacja wymaga pojedynczego wybranego węzła."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Lock View Rotation"
-msgstr "Wyświetlaj informacje"
+msgstr "Zablokuj obrót widoku"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
@@ -6079,7 +6014,7 @@ msgstr "Wyświetlaj środowisko"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "View Gizmos"
-msgstr "Wyświetlaj uchwyty"
+msgstr "Pokaż uchwyty"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
@@ -6094,18 +6029,16 @@ msgid "Half Resolution"
msgstr "Połowa rozdzielczości"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Audio Listener"
-msgstr "Nasłuchiwacz dźwięku"
+msgstr "Słuchacz dźwięku"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Doppler Enable"
msgstr "Efekt Dopplera"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Cinematic Preview"
-msgstr "Tworzenie podglÄ…du Mesh"
+msgstr "PodglÄ…d kinowy"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -6136,9 +6069,8 @@ msgid "Freelook Speed Modifier"
msgstr "Zmiennik prędkości \"Wolnego widoku\""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "Wyświetlaj informacje"
+msgstr "Obroty widoku zablokowane"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6171,9 +6103,8 @@ msgid "Scale Mode (R)"
msgstr "Tryb skalowania (R)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Coords"
-msgstr "Local Coords"
+msgstr "Lokalne koordynaty"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Space Mode (%s)"
@@ -6228,24 +6159,20 @@ msgid "Align Selection With View"
msgstr "Dopasuj zaznaczenie do widoku"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Wybierz narzędzie"
+msgstr "Narzędzie wyboru"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "PrzenieÅ›"
+msgstr "Narzędzie poruszania"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Narzędzie Obracanie"
+msgstr "Narzędzie obracania"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Narzędzia Skala"
+msgstr "Narzędzie skalowania"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Freelook"
@@ -6257,7 +6184,7 @@ msgstr "Przekształcanie"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap object to floor"
-msgstr ""
+msgstr "Przyciągnij obiekt do podłogi"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog..."
@@ -6288,9 +6215,8 @@ msgid "4 Viewports"
msgstr "4 widoki"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Gizmos"
-msgstr "Wyświetlaj uchwyty"
+msgstr "Uchwyty"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Origin"
@@ -6368,51 +6294,45 @@ msgid "Post"
msgstr "Po"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Sprite is empty!"
-msgstr "Ścieżka zapisu jest pusta!"
+msgstr "Sprite jest pusty!"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Can't convert a sprite using animation frames to mesh."
msgstr ""
+"Nie można przekonwertować sprite'a używającego klatek animacji na siatkę."
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
+msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę."
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Sprite"
-msgstr "SpriteFrames"
+msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Convert to 2D Mesh"
-msgstr "Konwersja do %s"
+msgstr "Konwertuj do siatki 2D"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Create 2D Mesh"
-msgstr "Utwórz siatkę zarysu"
+msgstr "Utwórz siatkę 2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Simplification: "
-msgstr ""
+msgstr "Uproszczenie: "
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Grow (Pixels): "
-msgstr "PrzyciÄ…ganie (piksele):"
+msgstr "Wzrost (piksele): "
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Update Preview"
-msgstr "PodglÄ…d"
+msgstr "Odśwież podgląd"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Settings:"
-msgstr "Ustawienia"
+msgstr "Ustawienia:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
@@ -6487,12 +6407,18 @@ msgid "Set Region Rect"
msgstr "Ustaw obszar tekstury"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Ustaw Uchwyt"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Tryb przyciÄ…gania:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<żaden>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Brak"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6516,10 +6442,9 @@ msgstr "Krok:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Sep.:"
-msgstr ""
+msgstr "Sep.:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "TextureRegion"
msgstr "Obszar tekstury"
@@ -6548,9 +6473,8 @@ msgid "Edit theme..."
msgstr "Edytuj motyw interfejsu..."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Theme editing menu."
-msgstr "Menu zmiany wyglÄ…du programu."
+msgstr "Menu edycji motywu."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -6585,23 +6509,20 @@ msgid "Item"
msgstr "Element"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Check Item"
-msgstr "Sprawdź element"
+msgstr "Element wyboru"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Checked Item"
-msgstr "Zaznaczony element"
+msgstr "Zaznaczony element wyboru"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Radio Item"
-msgstr "Dodaj element"
+msgstr "Element opcji"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Checked Radio Item"
-msgstr "Zaznaczony element"
+msgstr "Zaznaczony element opcji"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Has"
@@ -6612,17 +6533,14 @@ msgid "Many"
msgstr "Wiele"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Has,Many,Options"
-msgstr "Ma,Wiele,Różnych,Opcji!"
+msgstr "Ma,Wiele,Opcji"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Tab 1"
msgstr "Zakładka 1"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Tab 2"
msgstr "Zakładka 2"
@@ -6631,9 +6549,8 @@ msgid "Tab 3"
msgstr "Zakładka 3"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Data Type:"
-msgstr "Rodzaj Daty:"
+msgstr "Typ danych:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Icon"
@@ -6660,14 +6577,12 @@ msgid "Erase Selection"
msgstr "Usuń zaznaczenie"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Fix Invalid Tiles"
-msgstr "Niewłaściwa nazwa."
+msgstr "Napraw niewłaściwe kafelki"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Wyśrodkowywanie na zaznaczeniu"
+msgstr "Wytnij zaznaczenie"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6679,7 +6594,7 @@ msgstr "Rysuj LiniÄ™"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Malowanie prostokÄ…tne"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket Fill"
@@ -6690,9 +6605,8 @@ msgid "Erase TileMap"
msgstr "Wyczyść TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Find Tile"
-msgstr "Znajdź tile"
+msgstr "Znajdź kafelek"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
@@ -6708,49 +6622,45 @@ msgstr "Odbij Y"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint Tile"
-msgstr "Maluj Tile"
+msgstr "Maluj kafelek"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
-msgstr "Wybierz tile"
+msgstr "Wybierz kafelek"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Usuń zaznaczone"
+msgstr "Kopiuj zaznaczenie"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Tryb Rotacji"
+msgstr "Obróć w lewo"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Przesuń w prawo"
+msgstr "Obróć w prawo"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Odbij poziomo"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Odbij pionowo"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Przekształcanie"
+msgstr "Wyczyść przekształcenie"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
-msgstr "Dodaj węzeł(y) z drzewa"
+msgid "Add Texture(s) to TileSet."
+msgstr "Dodaj teksturÄ™ do TileSetu"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
-msgstr "Usuń punkt krzywej"
+msgid "Remove selected Texture from TileSet."
+msgstr "Usuń aktualną teksturę z TileSetu"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6761,22 +6671,44 @@ msgid "Merge from Scene"
msgstr "Połącz ze sceny"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Wklej animacjÄ™"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Usuń punkty."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Utwórz nowy wielokąt od zera."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture and ALL TILES which use it?"
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Pokaż nazwy kafelków (przytrzymaj Alt)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Remove selected texture and ALL TILES which use it?"
+msgstr "Usunąć wybraną teksturę i WSZYSTKIE KAFELKI, które jej używają?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
-msgstr ""
+msgstr "Nie wybrano tekstury do usunięcia."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from scene?"
@@ -6788,27 +6720,44 @@ msgstr "Połącz ze sceny?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "%s file(s) were not added because was already on the list."
-msgstr ""
+msgstr "%s plik(ów) nie zostało dodane, bo był(y) już na liście."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
"Drag handles to edit Rect.\n"
"Click on another Tile to edit it."
msgstr ""
+"Przeciągnij uchwyty, by edytować prostokąt.\n"
+"Kliknij na inny kafelek, by go edytować."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Usunąć zaznaczone pliki?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
+"Wybierz aktualnie edytowany pod-kafelek.\n"
+"Kliknij inny kafelek, by go edytować."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Usuwanie punktów"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
-msgstr "Wybierz aktualnie edytowany sub-tile."
+msgstr ""
+"LPM: włącz bit.\n"
+"PPM: wyłącz bit.\n"
+"Kliknij inny kafelek, by go edytować."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6816,42 +6765,56 @@ msgid ""
"bindings.\n"
"Click on another Tile to edit it."
msgstr ""
+"Wybierz pod-kafelek do użycia jako ikona. Zostanie on również użyty do "
+"niewłaściwych ustawień autokafelków.\n"
+"Kliknij inny kafelek, by go edytować."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
"Select sub-tile to change its priority.\n"
"Click on another Tile to edit it."
msgstr ""
+"Wybierz pod-kafelek, by zmienić jego priorytet.\n"
+"Kliknij inny kafelek, by go edytować."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Wybierz pod-kafelek, by zmienić jego priorytet.\n"
+"Kliknij inny kafelek, by go edytować."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
-msgstr "Ta operacja nie może zostać wykonana bez sceny."
+msgstr "Ta właściwość nie może zostać zmieniona."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
-msgstr "TileSet..."
+msgid "TileSet"
+msgstr "Zbiór kafelków"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Vertex"
-msgstr "Wierzchołki"
+msgstr "Wierzchołek"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Fragment"
-msgstr "Argumenty:"
+msgstr "Fragmenty"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Light"
-msgstr "Prawa"
+msgstr "Światło"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Dodaj węzeł..."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
-msgstr "Shader"
+msgstr "Shader wizualny"
#: editor/project_export.cpp
msgid "Runnable"
@@ -6871,12 +6834,11 @@ msgstr "Brakuje szablonów eksportu dla tej platformy lub są uszkodzone:"
#: editor/project_export.cpp
msgid "Release"
-msgstr ""
+msgstr "Wydanie"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportowanie do %s"
+msgstr "Eksportowanie wszystkiego"
#: editor/project_export.cpp
msgid "Presets"
@@ -6888,8 +6850,8 @@ msgstr "Dodaj..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "Szablon eksportu:"
+msgid "Export Path"
+msgstr "Ścieżka eksportu:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6954,14 +6916,12 @@ msgid "Export PCK/Zip"
msgstr "Eksport PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Tryb eksportu:"
+msgstr "Tryb eksportu?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Eksport"
+msgstr "Eksportuj wszystko"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -6976,32 +6936,29 @@ msgid "The path does not exist."
msgstr "Ścieżka nie istnieje."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid '.zip' project file, does not contain a 'project.godot' file."
-msgstr "Proszę wybrać folder nie zawierający pliku 'project.godot'."
+msgstr ""
+"Niewłaściwy projekt pliku \".zip\", nie zawiera pliku \"project.godot\"."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Please choose an empty folder."
-msgstr "Proszę wybrać plik 'project.godot'."
+msgstr "Proszę wybrać pusty folder."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Please choose a 'project.godot' or '.zip' file."
-msgstr "Proszę wybrać plik 'project.godot'."
+msgstr "Proszę wybrać plik \"project.godot\" lub \".zip\"."
#: editor/project_manager.cpp
msgid "Directory already contains a Godot project."
-msgstr ""
+msgstr "Folder już zawiera projekt Godota."
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Zaimportowano projekt"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid Project Name."
-msgstr "Nazwa projektu:"
+msgstr "Nieprawidłowa nazwa projektu."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -7020,11 +6977,12 @@ msgid "Invalid project path (changed anything?)."
msgstr "Niepoprawna ścieżka projektu (zmienić cokolwiek?)."
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Couldn't load project.godot in project path (error %d). It may be missing or "
"corrupted."
-msgstr "Nie można było edytować engine.cfg w ścieżce projektu."
+msgstr ""
+"Nie udało się wczytać project.godot w ścieżce projektu (błąd %d). Może go "
+"brakować lub być uszkodzony."
#: editor/project_manager.cpp
msgid "Couldn't edit project.godot in project path."
@@ -7083,9 +7041,8 @@ msgid "Project Path:"
msgstr "Ścieżka do projektu:"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Project Installation Path:"
-msgstr "Ścieżka do projektu:"
+msgstr "Ścieżka instalacji projektu:"
#: editor/project_manager.cpp
msgid "Browse"
@@ -7205,13 +7162,12 @@ msgid "Mouse Button"
msgstr "Przycisk myszy"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid ""
"Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
msgstr ""
-"Niepoprawna nazwa akcji. Nazwa nie może być pusta ani zawierać znaki takie "
-"jak: '/', ':', '=', '\\' lub '\"'"
+"Niepoprawna nazwa akcji. Nie może być pusta ani zawierać '/', ':', '=', '\\' "
+"lub '\"'"
#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
@@ -7222,18 +7178,16 @@ msgid "Rename Input Action Event"
msgstr "Zmień nazwę zdarzenia akcji wejścia"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Change Action deadzone"
-msgstr "Zmień nazwę animacji:"
+msgstr "Zmień martwą strefę akcji"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Dodaj zdarzenie akcji wejścia"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "All Devices"
-msgstr "UrzÄ…dzenie"
+msgstr "Wszystkie urzÄ…dzenia"
#: editor/project_settings_editor.cpp
msgid "Device"
@@ -7280,24 +7234,20 @@ msgid "Wheel Down Button"
msgstr "Kółko myszy w dół"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Wheel Left Button"
-msgstr "Kółko myszy w górę"
+msgstr "Kółko w lewo"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Wheel Right Button"
-msgstr "Prawy guzik"
+msgstr "Kółko w prawo"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "X Button 1"
-msgstr "Przycisk 6"
+msgstr "Przycisk X 1"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "X Button 2"
-msgstr "Przycisk 6"
+msgstr "Przycisk X 2"
#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
@@ -7368,13 +7318,12 @@ msgid "Delete Item"
msgstr "Usuń element"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'."
msgstr ""
-"Niepoprawna nazwa akcji. Nazwa nie może być pusta ani zawierać znaki takie "
-"jak: '/', ':', '=', '\\' lub '\"'"
+"Niepoprawna nazwa akcji. Nie może być pusta ani zawierać '/', ':', '=', '\\' "
+"lub '\"'."
#: editor/project_settings_editor.cpp
msgid "Already existing"
@@ -7394,7 +7343,7 @@ msgstr "Ustawienia zapisane pomyślnie."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Nadpisanie dla cechy"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -7410,7 +7359,7 @@ msgstr "Dodaj zmapowaną ścieżkę"
#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
-msgstr ""
+msgstr "Dodaj mapowanie zasobu"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
@@ -7446,7 +7395,7 @@ msgstr "Nadpisz dla..."
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Editor must be restarted for changes to take effect"
-msgstr ""
+msgstr "Edytor musi zostać zrestartowany, by zmiany miały efekt"
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -7462,7 +7411,7 @@ msgstr "Akcja"
#: editor/project_settings_editor.cpp
msgid "Deadzone"
-msgstr ""
+msgstr "Martwa strefa"
#: editor/project_settings_editor.cpp
msgid "Device:"
@@ -7569,7 +7518,6 @@ msgid "Pick a Node"
msgstr "Wybierz węzeł"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Bit %d, val %d."
msgstr "Bit %d, wartość %d."
@@ -7601,44 +7549,39 @@ msgstr "Zmień nazwę"
#: editor/rename_dialog.cpp
msgid "Prefix"
-msgstr ""
+msgstr "Przedrostek"
#: editor/rename_dialog.cpp
msgid "Suffix"
-msgstr ""
+msgstr "Przyrostek"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Advanced options"
-msgstr "Opcje przyciÄ…gania"
+msgstr "Opcje zaawansowane"
#: editor/rename_dialog.cpp
msgid "Substitute"
-msgstr ""
+msgstr "Substytut"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node name"
-msgstr "Nazwa węzła:"
+msgstr "Nazwa węzła"
#: editor/rename_dialog.cpp
msgid "Node's parent name, if available"
-msgstr ""
+msgstr "Nazwa rodzica węzła, jeśli dostępna"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node type"
-msgstr "Znajdź typ węzła"
+msgstr "Typ węzła"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Current scene name"
-msgstr "Aktualna scena"
+msgstr "Nazwa aktualnej sceny"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Root node name"
-msgstr "Nazwa węzła:"
+msgstr "Nazwa korzenia"
#: editor/rename_dialog.cpp
msgid ""
@@ -7652,35 +7595,35 @@ msgstr ""
#: editor/rename_dialog.cpp
msgid "If set the counter restarts for each group of child nodes"
-msgstr ""
+msgstr "Gdy ustawione, licznik restartuje dla każdej grupy węzłów potomnych"
#: editor/rename_dialog.cpp
msgid "Initial value for the counter"
-msgstr ""
+msgstr "Początkowa wartość dla licznika"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Step"
-msgstr "Krok:"
+msgstr "Krok"
#: editor/rename_dialog.cpp
msgid "Amount by which counter is incremented for each node"
-msgstr ""
+msgstr "Liczba, o którą licznik jest zwiększany dla każdego węzła"
#: editor/rename_dialog.cpp
msgid "Padding"
-msgstr ""
+msgstr "Wyrównanie"
#: editor/rename_dialog.cpp
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
msgstr ""
+"Minimalna liczba cyfr dla licznika.\n"
+"Brakujące cyfry są wyrównywane zerami poprzedzającymi."
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Regular Expressions"
-msgstr "Zmień wyrażenie"
+msgstr "Wyrażenia regularne"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -7693,30 +7636,27 @@ msgstr "Bez zmian"
#: editor/rename_dialog.cpp
msgid "CamelCase to under_scored"
-msgstr ""
+msgstr "CamelCase na under_scored"
#: editor/rename_dialog.cpp
msgid "under_scored to CamelCase"
-msgstr ""
+msgstr "under_scored na CamelCase"
#: editor/rename_dialog.cpp
msgid "Case"
-msgstr ""
+msgstr "Notacja"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "To Lowercase"
-msgstr "Małe Litery"
+msgstr "Na małe litery"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "To Uppercase"
-msgstr "Wielkie Litery"
+msgstr "Na wielkie litery"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Reset"
-msgstr "Wyzeruj przybliżenie"
+msgstr "Resetuj"
#: editor/rename_dialog.cpp
msgid "Error"
@@ -7774,9 +7714,8 @@ msgstr ""
"Nie można utworzyć sceny '%s' ponieważ obecna scena jest jednym z jej wezłów."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Instance Scene(s)"
-msgstr "Instancja Scen(y)"
+msgstr "Dodaj instancjÄ™ sceny"
#: editor/scene_tree_dock.cpp
msgid "Instance Child Scene"
@@ -7791,12 +7730,10 @@ msgid "This operation can't be done on the tree root."
msgstr "Nie można wykonać tej operacji na głównym węźle drzewa."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Move Node In Parent"
-msgstr "Przenieś węzeł w nadrzędny"
+msgstr "Przenieś węzeł w nadrzędnym"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Move Nodes In Parent"
msgstr "Przenieś węzły w nadrzędnym"
@@ -7825,6 +7762,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Wyłączenie \"edytowalnej instancji\" sprawi, że wszystkie właściwości węzła "
+"zostaną przywrócone do domyślnych."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7835,34 +7774,28 @@ msgid "Load As Placeholder"
msgstr "Wczytaj jako zastępczy"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make Local"
-msgstr "Uczyń lokalnym"
+msgstr "Zrób lokalne"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Create Root Node:"
-msgstr "Utwórz węzeł"
+msgstr "Utwórz korzeń:"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "2D Scene"
-msgstr "Scena"
+msgstr "Scena 2D"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "3D Scene"
-msgstr "Scena"
+msgstr "Scena 3D"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "User Interface"
-msgstr "Wyczyść dziedziczenie"
+msgstr "Interfejs użytkownika"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Custom Node"
-msgstr "Wytnij Węzły"
+msgstr "Inny węzeł"
#: editor/scene_tree_dock.cpp
msgid "Can't operate on nodes from a foreign scene!"
@@ -7905,9 +7838,8 @@ msgid "Clear Inheritance"
msgstr "Wyczyść dziedziczenie"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Otwórz dokumentację online"
+msgstr "Otwórz dokumentację"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7922,14 +7854,12 @@ msgid "Change Type"
msgstr "Zmień typ"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Otwórz skrypt"
+msgstr "Rozszerz skrypt"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make Scene Root"
-msgstr "To ma sens!"
+msgstr "Zmień na korzeń sceny"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -7941,7 +7871,7 @@ msgstr "Zapisz gałąź jako scenę"
#: editor/scene_tree_dock.cpp
msgid "Copy Node Path"
-msgstr "Skopiuj Ścieżkę"
+msgstr "Skopiuj ścieżkę węzła"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -7956,7 +7886,7 @@ msgid ""
"Instance a scene file as a Node. Creates an inherited scene if no root node "
"exists."
msgstr ""
-"Stwórz instancję sceny jako węzeł. Tworzy dziedziczącą scenę jeśli węzeł "
+"Dodaj instancję sceny jako węzeł. Tworzy dziedziczącą scenę jeśli węzeł "
"główny nie istnieje."
#: editor/scene_tree_dock.cpp
@@ -7980,7 +7910,6 @@ msgid "Clear Inheritance? (No Undo!)"
msgstr "Wyczyścić dziedziczenie? (Nie można cofnąć!)"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visible"
msgstr "Przełącz widoczność"
@@ -7989,12 +7918,11 @@ msgid "Node configuration warning:"
msgstr "Ostrzeżenie konfiguracji węzła:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid ""
"Node has connection(s) and group(s).\n"
"Click to show signals dock."
msgstr ""
-"Węzeł posiada połączenia i grupy\n"
+"Węzeł posiada połączenie(a) i grupę(y).\n"
"Kliknij, aby wyświetlić panel sygnałów."
#: editor/scene_tree_editor.cpp
@@ -8014,27 +7942,24 @@ msgstr ""
"Kliknij, aby wyświetlić panel grup."
#: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp
-#, fuzzy
msgid "Open Script"
msgstr "Otwórz skrypt"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid ""
"Node is locked.\n"
"Click to unlock it."
msgstr ""
"Węzeł jest zablokowany.\n"
-"Kliknij by odblokować"
+"Kliknij, by go odblokować."
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid ""
"Children are not selectable.\n"
"Click to make selectable."
msgstr ""
-"Dziecko nie jest możliwe do zaznaczenia.\n"
-"Kliknij by móc zaznaczyć"
+"Dzieci nie są możliwe do zaznaczenia.\n"
+"Kliknij, by móc zaznaczyć."
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
@@ -8045,6 +7970,8 @@ msgid ""
"AnimationPlayer is pinned.\n"
"Click to unpin."
msgstr ""
+"AnimationPlayer jest przypięty.\n"
+"Kliknij, by odpiąć."
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -8083,18 +8010,16 @@ msgid "N/A"
msgstr "N/A"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Open Script/Choose Location"
-msgstr "Otwórz edytor skryptów"
+msgstr "Otwórz skrypt/Wybierz lokację"
#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Ścieżka jest pusta"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Ścieżka zapisu jest pusta!"
+msgstr "Nazwa pliku jest pusta"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8185,9 +8110,8 @@ msgid "Bytes:"
msgstr "Bajty:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "Ramki stosu"
+msgstr "Åšlad stosu"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8275,7 +8199,7 @@ msgstr "Typ klikniętej kontrolki:"
#: editor/script_editor_debugger.cpp
msgid "Live Edit Root:"
-msgstr ""
+msgstr "Korzeń edycji:"
#: editor/script_editor_debugger.cpp
msgid "Set From Tree"
@@ -8295,7 +8219,7 @@ msgstr "Zmień promień światła"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Zmień kąt emisji węzła AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -8307,11 +8231,11 @@ msgstr "Zmień rozmiar kamery"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier AABB"
-msgstr ""
+msgstr "Zmień AABB powiadamiacza"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Zmień AABB cząsteczek"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -8334,38 +8258,32 @@ msgid "Change Capsule Shape Height"
msgstr "Zmień wysokość kształtu kapsuły"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Shape Radius"
-msgstr "Zmień średnicę Capsule Shape"
+msgstr "Zmień promień kształtu cylindra"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Shape Height"
-msgstr "Zmień wysokość kształtu kapsuły"
+msgstr "Zmień wysokość kształtu cylindra"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
msgstr "Zmień długość Ray Shape"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Radius"
-msgstr "Zmień promień światła"
+msgstr "Zmień promień cylindra"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Cylinder Height"
-msgstr "Zmień wysokość kształtu kapsuły"
+msgstr "Zmień wysokość cylindra"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Torus Inner Radius"
-msgstr "Zmień promień Sphere Shape"
+msgstr "Zmień wewnętrzny promień torusa"
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Change Torus Outer Radius"
-msgstr "Zmień promień światła"
+msgstr "Zmień zewnętrzny promień torusa"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
@@ -8376,9 +8294,8 @@ msgid "Select dependencies of the library for this entry"
msgstr "Zaznacz zależności biblioteki dla tego pola"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Usuń punkt krzywej"
+msgstr "Usuń aktualny wpis"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
@@ -8421,7 +8338,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "argument kroku wynosi zero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8455,21 +8373,19 @@ msgstr "Niepoprawna instancja słownika (niepoprawne podklasy)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Obiekt nie może podać długości."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Next Plane"
-msgstr "Następna zakładka"
+msgstr "Następna płaszczyzna"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Previous Plane"
-msgstr "Poprzednia zakładka"
+msgstr "Poprzednia płaszczyzna"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Plane:"
-msgstr ""
+msgstr "PÅ‚aszczyzna:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
@@ -8488,9 +8404,8 @@ msgid "GridMap Delete Selection"
msgstr "GridMap Usuń zaznaczenie"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Fill Selection"
-msgstr "GridMap Usuń zaznaczenie"
+msgstr "GridMap Wypełnij zaznaczenie"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Duplicate Selection"
@@ -8545,44 +8460,39 @@ msgstr "Kursor Obróć Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Kursor Obróć w tył X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Kursor Obróć w tył Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Kursor Obróć w tył Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Kursor Wyczyść obrót"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Tworzenie obszaru"
+msgstr "Utwórz obszar"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Utwórz nowy projekt"
+msgstr "Utwórz łącznik zewnętrzny"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
msgstr "Usuń obszar"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear Selection"
-msgstr "Wyczyść zaznaczenie"
+msgstr "Wyczyść zaznaczone"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Fill Selection"
-msgstr "Wszystkie zaznaczenia"
+msgstr "Wypełnij zaznaczone"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Settings"
@@ -8893,9 +8803,8 @@ msgid "Change Input Value"
msgstr "Zmień wartość wejściową"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "Nie można skopiować funkcji węzła."
+msgstr "Nie można skopiować węzła funkcji."
#: modules/visual_script/visual_script_editor.cpp
msgid "Clipboard is empty!"
@@ -8970,9 +8879,8 @@ msgid "Paste Nodes"
msgstr "Wklej węzły"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Member"
-msgstr "Członkowie"
+msgstr "Edytuj członka"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
@@ -8987,9 +8895,8 @@ msgid "Iterator became invalid: "
msgstr "Iterator stał się nieprawidłowy: "
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Invalid index property name."
-msgstr "Nieprawidłowa nazwa klasy bazowej"
+msgstr "Nieprawidłowa nazwa właściwości indeksowej."
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
@@ -9033,17 +8940,16 @@ msgstr ""
"całkowitą (seq out), lub tekstową (error)."
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Search VisualScript"
-msgstr "Usuń węzeł VisualScript"
+msgstr "Przeszukaj VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Przyjmij %s"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Set %s"
-msgstr ""
+msgstr "Ustaw %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9096,16 +9002,15 @@ msgstr ""
"przy czym pozostałe zostaną zignorowane."
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
"define its shape."
msgstr ""
-"Ten węzeł nie posiada podwezła, który definiował by jego kształt, więc nie "
-"może wchodzić w interakcje.\n"
-"Powinieneś dodać węzeł \"CollisionShape2D\" lub \"CollisionPolygon2D\" jako "
-"podwęzeł aby zdefiniować kształt."
+"Ten węzeł nie posiada kształtu, więc nie może kolidować, czy wchodzić w "
+"interakcje z innymi obiektami.\n"
+"Rozważ dodanie węzła CollisionShape2D lub CollisionPolygon2D jako podrzędny, "
+"aby zdefiniować kształt."
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -9144,6 +9049,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animacja CPUParticles2D wymaga użycia CanvasItemMaterial z włączonym "
+"\"Particles Animation\"."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9199,6 +9106,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animacja Particles2D wymaga użycia CanvasItemMaterial z włączonym "
+"\"Particles Animation\"."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9221,16 +9130,20 @@ msgstr "Żeby zadziałało, pole Path musi wskazywać na istniejący węzeł Nod
#: scene/2d/skeleton_2d.cpp
msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
+msgstr "Ten łańcuch kości 2D powinien się kończyć na węźle Skeleton2D."
#: scene/2d/skeleton_2d.cpp
msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
msgstr ""
+"Węzeł Bone2D działa tylko z węzłem Skeleton2D lub innym Bone2D jako "
+"nadrzędnym węzłem."
#: scene/2d/skeleton_2d.cpp
msgid ""
"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
msgstr ""
+"Tej kości brakuje odpowiedniej pozy spoczynkowej. Pójdź do węzła Skeleton2D "
+"i ustaw jÄ…."
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -9245,9 +9158,8 @@ msgid "ARVRCamera must have an ARVROrigin node as its parent"
msgstr "ARVRCamera musi dziedziczyć po węźle ARVROrigin"
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr "ARVRController musi posiadać węzeł ARVROrigin jako rodzica"
+msgstr "ARVRController musi posiadać węzeł ARVROrigin jako nadrzędny"
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -9258,15 +9170,16 @@ msgstr ""
"przypisany do żadnego rzeczywistego kontrolera"
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr "ARVRAnchor musi posiadać węzeł ARVROrigin jako rodzica"
+msgstr "ARVRAnchor musi posiadać węzeł ARVROrigin jako nadrzędny"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The anchor id must not be 0 or this anchor will not be bound to an actual "
"anchor"
msgstr ""
+"ID kotwicy nie może być 0, bo inaczej ta kotwica nie będzie przypisana do "
+"rzeczywistej kotwicy"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
@@ -9298,16 +9211,15 @@ msgid "Lighting Meshes: "
msgstr "Oświetlanie siatek: "
#: scene/3d/collision_object.cpp
-#, fuzzy
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape or CollisionPolygon as a child to define "
"its shape."
msgstr ""
-"Ten węzeł nie posiada podwezła, który definiowałby jego kształt, więc nie "
-"może wchodzić w interakcje z przestrzenią.\n"
-"Powinieneś dodać węzeł \"CollisionShape2D\" lub \"CollisionPolygon2D\" jako "
-"jego podwęzeł aby zdefiniować jego kształt."
+"Ten węzeł nie posiada kształtu, więc nie może kolidować, czy wchodzić w "
+"interakcje z innymi obiektami.\n"
+"Rozważ dodanie węzła CollisionShape lub CollisionPolygon jako podrzędny, aby "
+"zdefiniować kształt."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -9342,14 +9254,17 @@ msgstr ""
"Utwórz zasób typu CollisionShape w odpowiednim polu obiektu!"
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
+#, fuzzy
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Nic nie jest widoczne, bo nie została przypisana żadna siatka."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"Animacja CPUParticles wymaga użycia SpatialMaterial z włączonym \"Billboard "
+"Particles\"."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9373,26 +9288,31 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Nic nie jest widoczne, bo siatki nie zostały przypisane do kolejki rysowania."
#: scene/3d/particles.cpp
msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Animacja Particles wymaga użycia SpatialMaterial z włączonym \"Billboard "
+"Particles\"."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D."
+msgstr "PathFollow działa tylko, gdy jest węzłem podrzędnym Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D."
+msgstr "OrientedPathFollow działa tylko, gdy jest węzłem podrzędnym Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow wymaga włączonych wektorów w górę w jego nadrzędnym Path."
#: scene/3d/physics_body.cpp
#, fuzzy
@@ -9411,7 +9331,7 @@ msgstr "Pole Path musi wskazywać na węzeł Spatial."
#: scene/3d/scenario_fx.cpp
msgid "WorldEnvironment needs an Environment resource."
-msgstr ""
+msgstr "WorldEnvironment wymaga zasobu Environment."
#: scene/3d/scenario_fx.cpp
msgid ""
@@ -9425,20 +9345,21 @@ msgid ""
"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
"this environment's Background Mode to Canvas (for 2D scenes)."
msgstr ""
+"Ten WorldEnvironment jest ignorowany. Dodaj Camera (dla scen 3D) lub ustaw "
+"Background Mode tego środowiska na Canvas (dla scen 2D)."
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh"
-msgstr ""
+msgstr "To ciało będzie ignorowane, dopóki nie ustawisz siatki"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Zmiany rozmiaru w RigidBody (w trybach character i rigid) zostanÄ… nadpisane "
-"przez silnik fizyki podczas działania.\n"
+"Zmiany rozmiaru dla SoftBody zostanÄ… nadpisane przez silnik fizyki podczas "
+"działania.\n"
"Zamiast tego, zmień rozmiary kształtów kolizji w węzłach podrzędnych."
#: scene/3d/sprite_3d.cpp
@@ -9459,44 +9380,45 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
+msgstr "W węźle BlendTree '%s', animacja nie znaleziona: '%s'"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Animation not found: '%s'"
-msgstr "Narzędzia do animacji"
+msgstr "Animacja nie znaleziona: '%s'"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
+msgstr "W węźle '%s', nieprawidłowa animacja: '%s'."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "BÅÄ„D: bÅ‚Ä™dna nazwa animacji!"
+msgstr "Nieprawidłowa animacja: '%s'."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Nothing connected to input '%s' of node '%s'."
-msgstr "Rozłącz '%s' z '%s'"
+msgstr "Nic nie podłączono do wejścia '%s' węzła '%s'."
#: scene/animation/animation_tree.cpp
msgid "A root AnimationNode for the graph is not set."
-msgstr ""
+msgstr "Korzeń dla grafu AnimationNode nie jest ustawiony."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr "Zaznacz węzeł AnimationPlayer w drzewie sceny aby edytować animacje."
+msgstr ""
+"Ścieżka do węzła AnimationPlayer zawierającego animacje nie jest ustawiona."
#: scene/animation/animation_tree.cpp
msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
msgstr ""
+"Ścieżka do węzła AnimationPlayer nie prowadzi do węzła AnimationPlayer."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "AnimationPlayer root is not a valid node."
-msgstr "Drzewo animacji jest wadliwe."
+msgstr "Korzeń AnimationPlayer nie jest poprawnym węzłem."
+
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
@@ -9514,6 +9436,10 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Proszę potwierdzić..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9544,13 +9470,12 @@ msgid "(Other)"
msgstr "Inne"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
-"Domyślne Środowisko określone w Ustawieniach Projektu (Renderowanie -> "
-"Viewport -> Domyślne Środowisko) nie mogło zostać załadowane."
+"Domyślne środowisko określone w Ustawieniach Projektu (Renderowanie -> "
+"Environment -> Default Environment) nie mogło zostać załadowane."
#: scene/main/viewport.cpp
msgid ""
@@ -9581,31 +9506,77 @@ msgid "Invalid font size."
msgstr "Niepoprawny rozmiar fonta."
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Input"
-msgstr "Dodaj Wejście"
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<żaden>"
+msgstr "Wejście"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "Wadliwe źródło!"
+msgstr "Niewłaściwe źródło dla shadera."
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
-msgstr ""
+msgstr "Przypisanie do funkcji."
#: servers/visual/shader_language.cpp
msgid "Assignment to uniform."
-msgstr ""
+msgstr "Przypisanie do uniformu."
#: servers/visual/shader_language.cpp
msgid "Varyings can only be assigned in vertex function."
-msgstr ""
+msgstr "Varying może być przypisane tylko w funkcji wierzchołków."
+
+#~ msgid "Create Poly"
+#~ msgstr "Utwórz Polygon"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Utwórz nowy wielokąt od zera"
+
+#~ msgid "Zoom out"
+#~ msgstr "Pomniejsz"
+
+#~ msgid "Zoom in"
+#~ msgstr "Powiększ"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Stwórz Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Brak zasobu OccluderPolygon2D w tym węźle.\n"
+#~ "Stworzyć i przypisać nowy?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Edytuj istniejÄ…cy polygon:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Przesuń Punkt."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl + LPM: Podziału segmentu."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Wymaż Punkt."
+
+#~ msgid "New TextFile"
+#~ msgstr "Nowy plik tekstowy"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Zapisz motyw jako"
+
+#~ msgid "<None>"
+#~ msgstr "<żaden>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Wybierz pod-kafelek do użycia jako ikona. Zostanie on użyty również do "
+#~ "niewłaściwych ustawień autokafelków."
+
+#~ msgid "Zoom:"
+#~ msgstr "Powiększenie:"
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Na pewno chcesz usunąć wszystkie połączenia z \""
@@ -10286,9 +10257,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "Źródło fontu:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Wielkość oryginalna fontu:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Zasób docelowy:"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 065cbdfc59..a87270b89a 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -2,22 +2,23 @@
# Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
-#
# Calum Knott <calum@calumk.com>, 2017.
# Zion Nimchuk <zionnimchuk@gmail.com>, 2016-2017.
-#
+# Allan Nordhøy <epost@anotheragency.no>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-11-23 14:48+0000\n"
-"Last-Translator: Calum Knott <calum@calumk.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
+"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Pirate <https://hosted.weblate.org/projects/godot-engine/"
"godot/pr/>\n"
"Language: pr\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -265,7 +266,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -536,15 +536,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -553,7 +557,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -715,8 +719,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -763,8 +767,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1220,8 +1223,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1688,6 +1690,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2086,7 +2094,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2110,7 +2118,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2526,6 +2534,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2542,8 +2556,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2969,7 +2982,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3096,7 +3109,7 @@ msgstr ""
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Yer unique name be evil."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3346,45 +3359,46 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Ye be fixin' Signal:"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "Discharge ye' Function"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Yar, Blow th' Selected Down!"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
+msgid "Erase points."
msgstr "Yar, Blow th' Selected Down!"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3429,17 +3443,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Yar, Blow th' Selected Down!"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Yar, Blow th' Selected Down!"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3516,7 +3519,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Add Node"
@@ -4053,7 +4055,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4204,15 +4206,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4471,7 +4473,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4576,35 +4587,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4972,6 +4957,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4999,6 +4988,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5014,11 +5007,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5079,6 +5067,10 @@ msgstr "Discharge ye' Function"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5090,7 +5082,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5133,7 +5131,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5157,12 +5163,9 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+#, fuzzy
+msgid "Move Points"
+msgstr "Discharge ye' Signal"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5189,19 +5192,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5340,20 +5343,24 @@ msgid "Error saving file!"
msgstr "Error loading yer Calligraphy Pen."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Blimey! I can't make th' signature object!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Error loading yer Calligraphy Pen."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Error loading yer Calligraphy Pen."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Error loading yer Calligraphy Pen."
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5372,6 +5379,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5412,7 +5427,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5442,15 +5457,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5559,6 +5574,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Add Function"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5591,10 +5610,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6295,11 +6310,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6542,12 +6562,12 @@ msgstr "Change yer Anim Transform"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Add Node(s) From yer Tree"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Discharge ye' Signal"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6559,13 +6579,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Paste yer Node"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6595,16 +6636,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Slit th' Node"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Yar, Blow th' Selected Down!"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Slit th' Node"
@@ -6622,11 +6674,18 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Slit th' Node"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6642,6 +6701,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Add Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6679,7 +6743,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8145,7 +8209,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Blimey! Ye step argument be marooned!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8497,7 +8562,7 @@ msgstr "Yer variables:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name is not a valid identifier:"
-msgstr "Yer name's got no valid identifier: "
+msgstr "Yer name's got no valid identifier:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
@@ -9025,7 +9090,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9068,7 +9133,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9157,6 +9224,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9173,6 +9244,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9229,10 +9304,6 @@ msgstr "Yer Calligraphy be wrongly sized."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index e7fcb8b27d..275f374a74 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -37,12 +37,14 @@
# LucasSouza6 <lucasosouza66@gmail.com>, 2018.
# Pedro Pacheco <pedroxixipa@hotmail.com>, 2018.
# Bruno Henrique <nimbusdroid@gmail.com>, 2018.
+# Luciano Scilletta <lucianoscilletta@gmail.com>, 2018.
+# Julio Yagami <juliohenrique31501234@hotmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2018-11-26 16:10+0000\n"
-"Last-Translator: Bruno Henrique <nimbusdroid@gmail.com>\n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
+"Last-Translator: Julio Yagami <juliohenrique31501234@hotmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -50,7 +52,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -284,7 +286,6 @@ msgstr "Criar %d NOVAS trilhas e inserir chaves?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -433,12 +434,10 @@ msgid "Delete Selection"
msgstr "Deletar Seleção"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Ir ao Próximo Passo"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Ir ao Passo Anterior"
@@ -562,15 +561,19 @@ msgstr "Substituir Tudo"
msgid "Selection Only"
msgstr "Apenas na Seleção"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Ampliar"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Reduzir"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Redefinir Ampliação"
@@ -579,8 +582,9 @@ msgid "Warnings:"
msgstr "Avisos:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Ampliação:"
+#, fuzzy
+msgid "Font Size:"
+msgstr "Tamanho da Fonte de Origem:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -693,9 +697,8 @@ msgid "Edit Connection: "
msgstr "Editar Conexão: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Tem certeza que quer remover todas conexões desse sinal?"
+msgstr "Tem certeza que quer remover todas as conexões do sinal \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -740,8 +743,8 @@ msgid "Recent:"
msgstr "Recente:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Pesquisar:"
@@ -792,8 +795,7 @@ msgid "Resource"
msgstr "Recurso"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Caminho"
@@ -1256,8 +1258,7 @@ msgid "Node Name:"
msgstr "Nome do nó:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
@@ -1344,7 +1345,6 @@ msgid "Copy Path"
msgstr "Copiar Caminho"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Mostrar no Gerenciador de Arquivos"
@@ -1495,9 +1495,8 @@ msgid "Methods"
msgstr "Métodos"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Métodos"
+msgstr "Métodos:"
#: editor/editor_help.cpp
#, fuzzy
@@ -1741,6 +1740,12 @@ msgstr "Essa operação não pode ser realizada sem uma raiz da cena."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1748,8 +1753,9 @@ msgstr ""
"herança) não foram satisfeitas."
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Não é possível sobrescrever cena que ainda está aberta!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -2183,7 +2189,7 @@ msgid "Undo"
msgstr "Desfazer"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Refazer"
@@ -2207,7 +2213,7 @@ msgstr "Configurações do Projeto"
msgid "Export"
msgstr "Exportar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Ferramentas"
@@ -2637,24 +2643,37 @@ msgstr "Atribuir.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+#, fuzzy
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Não é possível criar uma ViewportTexture nos recursos salvos como um "
+"arquivo.\n"
+"Recursos precisam pertencer à cena."
#: editor/editor_properties.cpp
+#, fuzzy
msgid ""
"Can't create a ViewportTexture on this resource because it's not set as "
"local to scene.\n"
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Não é possível criar uma ViewportTexture nesse recurso porque não está "
+"definido como uma cena local.\n"
+"Por favor troque na 'local para cena' propriedade"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Escolha uma Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Novo Script"
@@ -3081,7 +3100,7 @@ msgstr "Duplicar..."
msgid "Move To..."
msgstr "Mover Para..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Novo Script..."
@@ -3214,7 +3233,8 @@ msgid "Group name already exists."
msgstr "ERRO: Nome da animação já existe!"
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "Nome de Grupo Inválido."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3466,14 +3486,14 @@ msgid "Activate now?"
msgstr "Ativar agora?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Criar Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editar Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3481,25 +3501,28 @@ msgid "Insert Point"
msgstr "Inserir Ponto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Editar Polígono (Remover Ponto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Remover Polígono e Ponto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Criar um novo polígono do zero"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Criar Pontos"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Editar polígono existente:\n"
"LMB: Mover Ponto.\n"
@@ -3507,8 +3530,10 @@ msgstr ""
"RMB: Apagar Ponto."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Excluir Pontos"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "RMB: Apagar Pontos"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3560,17 +3585,6 @@ msgstr "Selecionar e mover pontos, criar pontos com RMB."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Criar Pontos"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Apagar Pontos"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Mover Ponto"
@@ -3651,7 +3665,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Adicionar Nó"
@@ -4206,7 +4219,7 @@ msgstr "Todos"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordenar:"
@@ -4367,21 +4380,19 @@ msgid "Paste Pose"
msgstr "Colar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Ampliar Menos"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Restaurar Ampliação"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Ampliar Mais"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Modo de Seleção"
@@ -4647,8 +4658,17 @@ msgstr ""
"Arrastar e soltar + Alt : Mudar tipo de nó"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Criar Polígono 3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Criar Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar Polígono (Remover Ponto)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4750,37 +4770,9 @@ msgid "Item List Editor"
msgstr "Editor de Lista de Itens"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Nenhum recurso OccluderPolygon2D neste nó.\n"
-"Criar e atribuir um?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Criar Polígono de Oclusão"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Criar um novo polígono do zero."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Editar polígono existente:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Mover Ponto."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Dividir Segmento."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Apagar Ponto."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh está vazia!"
@@ -5153,6 +5145,11 @@ msgid "Add Point to Curve"
msgstr "Adicionar Ponto à Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Fechar Curva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Mover Ponto na Curva"
@@ -5180,6 +5177,11 @@ msgid "Click: Add Point"
msgstr "Clique: Adicionar Ponto"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Dividir Segmentos (na curva)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Clique Direito: Excluir Ponto"
@@ -5195,11 +5197,6 @@ msgstr "Adicionar Ponto (em espaço vazio)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Dividir Segmentos (na curva)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Excluir Ponto"
@@ -5256,6 +5253,10 @@ msgstr "Remover Ponto de Controle de Saída"
msgid "Remove In-Control Point"
msgstr "Remover Ponto de Controle de Entrada"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Dividir Segmentos (na curva)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5268,10 +5269,19 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Mostrar Ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Sem textura nesse nó.\n"
+"Defina uma textura para poder editar essa região."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Criar Mapa UV"
@@ -5313,10 +5323,20 @@ msgid "Transform UV Map"
msgstr "Transformar Mapa UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipo de Transformação"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor UV de Polígonos 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor UV de Polígonos 2D"
@@ -5341,11 +5361,7 @@ msgstr "Fazer Ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Criar Polígono"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Mover Ponto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5373,20 +5389,20 @@ msgid "Scale Polygon"
msgstr "Escalonar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Selecione um item de configuração primeiro!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5535,19 +5551,23 @@ msgid "Error saving file!"
msgstr "Erro ao salvar TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Erro ao salvar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Erro ao salvar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Erro ao importar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Erro ao importar"
#: editor/plugins/script_editor_plugin.cpp
@@ -5570,6 +5590,14 @@ msgid "Import Theme"
msgstr "Importar Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Erro ao salvar tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Erro ao salvar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Salvar Tema Como..."
@@ -5611,8 +5639,8 @@ msgstr "Arquivo"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Ver Arquivos"
+msgid "Open..."
+msgstr "Abrir"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5641,6 +5669,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importar Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recarregar Tema"
@@ -5649,10 +5682,6 @@ msgid "Save Theme"
msgstr "Salvar Tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Salvar Tema Como"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Fechar Docs"
@@ -5762,6 +5791,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Ir para Função..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Apenas recursos do sistema de arquivos podem ser soltos."
@@ -5795,10 +5828,6 @@ msgstr "Capitalizar"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6513,11 +6542,18 @@ msgid "Set Region Rect"
msgstr "Definir Retângulo de Região"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Definir Manipulador"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Nenhum>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6762,12 +6798,12 @@ msgstr "Transformação"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Adicionar Nó(s) a Partir da Ãrvore"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Remover a entrada atual"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6779,15 +6815,34 @@ msgid "Merge from Scene"
msgstr "Fundir a partir de Cena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Colar Animação"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "RMB: Apagar Pontos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Criar um novo polígono do zero."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
msgstr ""
-"Selecione o sub-tile para usar como ícone, isso também vai ser usado em "
-"vinculamentos de autotiles inválidos."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6820,13 +6875,8 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"LMB: ligar bit.\n"
-"RMB: desligar bit."
+msgid "Delete selected Rect."
+msgstr "Excluir arquivos selecionados?"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6837,6 +6887,21 @@ msgstr "Selecione o sub-tile editado atual."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Delete polygon."
+msgstr "Excluir Pontos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"LMB: ligar bit.\n"
+"RMB: desligar bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6854,11 +6919,19 @@ msgstr "Selecione o sub-tile para alterar sua prioridade."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Selecione o sub-tile para alterar sua prioridade."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Essa operação não pode ser realizada sem uma cena."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Tile Set"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6877,6 +6950,11 @@ msgstr "Direita"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Adicionar Nó"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Shader"
@@ -6917,7 +6995,7 @@ msgstr "Adicionar..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Preset de Exportação:"
#: editor/project_export.cpp
@@ -8450,7 +8528,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "o argumento step é zero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9371,7 +9450,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
"Nada está visível porque as meshes não foram atribuídas a passes de desenho."
@@ -9424,7 +9503,9 @@ msgstr ""
"PathFollow2D apenas funciona quando definido como filho de um nó Path2D."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9532,6 +9613,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Ãrvore de Animação é inválida."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Modo Bruto"
@@ -9548,6 +9633,10 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirme Por Favor..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9617,11 +9706,6 @@ msgstr "Tamanho de fonte inválido."
msgid "Input"
msgstr "Adicionar Entrada"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Nenhum>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9641,6 +9725,62 @@ msgstr "Atribuição à uniforme."
msgid "Varyings can only be assigned in vertex function."
msgstr "Variáveis só podem ser atribuídas na função de vértice."
+#~ msgid "Create Poly"
+#~ msgstr "Criar Polígono"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Criar um novo polígono do zero"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Ampliar Menos"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Ampliar Mais"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Criar Polígono 3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Nenhum recurso OccluderPolygon2D neste nó.\n"
+#~ "Criar e atribuir um?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Editar polígono existente:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Mover Ponto."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Dividir Segmento."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Apagar Ponto."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Ver Arquivos"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Salvar Tema Como"
+
+#~ msgid "<None>"
+#~ msgstr "<Nenhum>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Selecione o sub-tile para usar como ícone, isso também vai ser usado em "
+#~ "vinculamentos de autotiles inválidos."
+
+#~ msgid "Zoom:"
+#~ msgstr "Ampliação:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Tem certeza que quer remover todas conexões do \""
@@ -10366,9 +10506,6 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice."
#~ msgid "Source Font:"
#~ msgstr "Fonte Origem:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Tamanho da Fonte de Origem:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Recurso Destino:"
@@ -11145,13 +11282,6 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice."
#~ msgid "Scale Region Editor"
#~ msgstr "Editor de Região de Escala"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "Sem textura nesse nó.\n"
-#~ "Defina uma textura para poder editar essa região."
-
#~ msgid "Inherit Scene"
#~ msgstr "Herdar Cena"
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 8ace02c1e0..8e0fcad566 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -16,15 +16,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-21 19:08+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
"Language: pt_PT\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -258,7 +260,6 @@ msgstr "Criar %d NOVAS Pistas e inserir Chaves?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -409,14 +410,12 @@ msgid "Delete Selection"
msgstr "Apagar Seleção"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Ir Próximo Passo"
+msgstr "Ir para Próximo Passo"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "Ir Passo Anterior"
+msgstr "Ir para Passo Anterior"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -538,15 +537,19 @@ msgstr "Substituir todos"
msgid "Selection Only"
msgstr "Apenas seleção"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom In"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom Out"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Repor Zoom"
@@ -555,8 +558,8 @@ msgid "Warnings:"
msgstr "Avisos:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Zoom:"
+msgid "Font Size:"
+msgstr "Tamanho do tipo de letra:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -669,9 +672,8 @@ msgid "Edit Connection: "
msgstr "Editar Conexão: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Deseja remover todas as conexões deste sinal?"
+msgstr "Deseja remover todas as conexões do sinal \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -716,8 +718,8 @@ msgid "Recent:"
msgstr "Recente:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Procurar:"
@@ -768,8 +770,7 @@ msgid "Resource"
msgstr "Recurso"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Caminho"
@@ -826,9 +827,8 @@ msgid "Error loading:"
msgstr "Erro ao carregar:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "Cena falha ao carregar devido a dependências que estão em falta:"
+msgstr "Falha no carregamento devido a dependências em falta:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1235,8 +1235,7 @@ msgid "Node Name:"
msgstr "Nome do Nó:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
@@ -1314,22 +1313,19 @@ msgid "File Exists, Overwrite?"
msgstr "O Ficheiro existe, sobrescrever?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Selecionar esta pasta"
+msgstr "Selecionar esta Pasta"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "Copiar Caminho"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
msgstr "Abrir no Gestor de Ficheiros"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "Mostrar no Gestor de Ficheiros"
@@ -1474,19 +1470,16 @@ msgid "Methods"
msgstr "Métodos"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Métodos"
+msgstr "Métodos:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "Propriedades"
+msgstr "Propriedades do Tema"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "Propriedades:"
+msgstr "Propriedades do Tema:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1513,14 +1506,12 @@ msgid "Constants:"
msgstr "Constantes:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "Descrição"
+msgstr "Descrição da Classe"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "Descrição:"
+msgstr "Descrição da Classe:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1537,14 +1528,12 @@ msgstr ""
"um[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "Descrição da Propriedade:"
+msgstr "Descrições da Propriedade"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "Descrição da Propriedade:"
+msgstr "Descrições da Propriedade:"
#: editor/editor_help.cpp
msgid ""
@@ -1555,14 +1544,12 @@ msgstr ""
"[color=$color][url=$url]contribuindo com uma[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "Descrição do Método:"
+msgstr "Descrições do Método"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "Descrição do Método:"
+msgstr "Descrições do Método:"
#: editor/editor_help.cpp
msgid ""
@@ -1578,49 +1565,40 @@ msgid "Search Help"
msgstr "Procurar em Ajuda"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Vista normal"
+msgstr "Mostrar Tudo"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "Classes"
+msgstr "Apenas Classes"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Métodos"
+msgstr "Apenas Métodos"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Sinais"
+msgstr "Apenas Sinais"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "Constantes"
+msgstr "Apenas Constantes"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "Propriedades"
+msgstr "Apenas Propriedades"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "Propriedades"
+msgstr "Apenas Propriedades do Tema"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Membros"
+msgstr "Tipo do Membro"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "Classe:"
+msgstr "Classe"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1719,6 +1697,15 @@ msgstr "Esta operação não pode ser feita sem uma raiz da árvore."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Esta cena não pode ser guardada porque existe inclusão de instâncias "
+"cíclica.\n"
+"Resolva-a e tente guardá-la novamente."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1727,7 +1714,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Não se consegue sobrescrever cena ainda aberta!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1986,13 +1973,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Incapaz de carregar Script addon do Caminho: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Incapaz de carregar Script addon do Caminho: '%s' Script não está no modo "
-"ferramenta."
+"Incapaz de carregar Script addon do caminho: '%s' Parece haver um erro no "
+"código, reveja a sintaxe."
#: editor/editor_node.cpp
msgid ""
@@ -2046,7 +2032,6 @@ msgstr "Padrão"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Mostrar no Sistema de Ficheiros"
@@ -2131,7 +2116,6 @@ msgid "Save Scene"
msgstr "Guardar Cena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Guardar todas as Cenas"
@@ -2161,7 +2145,7 @@ msgid "Undo"
msgstr "Desfazer"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Refazer"
@@ -2185,7 +2169,7 @@ msgstr "Configurações de Projeto"
msgid "Export"
msgstr "Exportar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Ferramentas"
@@ -2227,8 +2211,8 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
-"Quando esta opção está ativa, exportação ou distribuição criará um "
-"executável mínimo.\n"
+"Quando esta opção é ativada, exportação ou distribuição criará um executável "
+"mínimo.\n"
"O Sistema de Ficheiros será fornecido ao Projeto pelo Editor sobre a rede.\n"
"Em Android, a distribuição irá usar a ligação USB para melhor performance. "
"Esta opção acelera o teste de jogos pesados."
@@ -2614,9 +2598,17 @@ msgstr "Atribuir.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Não se consegue criar Textura Viewport em recursos guardados como ficheiro.\n"
+"O recurso tem de pertencer a uma cena."
#: editor/editor_properties.cpp
msgid ""
@@ -2625,13 +2617,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Não se consegue criar Textura Viewport neste recurso porque não está "
+"definido na cena como local.\n"
+"Ative a sua propriedade 'local to scene' (e em todos os recursos que o "
+"contêm até a um Nó)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Escolha uma Vista"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Novo Script"
@@ -2941,9 +2936,8 @@ msgstr ""
"leitura!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favoritos:"
+msgstr "Favoritos"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3028,14 +3022,12 @@ msgid "Instance"
msgstr "Instância"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Favoritos:"
+msgstr "Adicionar aos Favoritos"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Remover do Grupo"
+msgstr "Remover dos Favoritos"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3057,7 +3049,7 @@ msgstr "Duplicar..."
msgid "Move To..."
msgstr "Mover para..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Novo Script..."
@@ -3066,14 +3058,12 @@ msgid "New Resource..."
msgstr "Novo Recurso..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "Expandir tudo"
+msgstr "Expandir Tudo"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "Colapsar tudo"
+msgstr "Colapsar Tudo"
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3095,9 +3085,8 @@ msgid "Re-Scan Filesystem"
msgstr "Carregar novamente o Sistema de Ficheiros"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Alternar modo"
+msgstr "Alternar modo de divisão"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3132,24 +3121,20 @@ msgid "Create Script"
msgstr "Criar Script"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
-msgstr "Localizar em ficheiros"
+msgstr "Localizar em Ficheiros"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Localizar: "
+msgstr "Localizar:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Pasta: "
+msgstr "Pasta:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtro: "
+msgstr "Filtros:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3189,7 +3174,8 @@ msgid "Group name already exists."
msgstr "Já existe o nome de grupo ."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "Nome de Grupo inválido."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3299,11 +3285,11 @@ msgstr "A guardar..."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr "Definir como padrão para '%s'"
+msgstr "Definir como Padrão para '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr "Limpar padrão para '%s'"
+msgstr "Limpar Padrão para '%s'"
#: editor/import_dock.cpp
msgid " Files"
@@ -3326,14 +3312,12 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
-msgstr "Expandir tudo"
+msgstr "Expandir Todas as Propriedades"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
-msgstr "Colapsar todas as Propriedades"
+msgstr "Colapsar Todas as Propriedades"
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3437,14 +3421,13 @@ msgid "Activate now?"
msgstr "Ativar agora?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Criar Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editar Polígono"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3452,25 +3435,27 @@ msgid "Insert Point"
msgstr "Inserir Ponto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Editar Poly (Remover Ponto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Remover Poly e Ponto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Criar um novo Polígono de raíz"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Criar pontos."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Editar Polígono existente:\n"
"LMB: Mover Ponto.\n"
@@ -3478,8 +3463,9 @@ msgstr ""
"RMB: Apagar Ponto."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Apagar Pontos"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Apagar pontos."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3526,15 +3512,6 @@ msgstr "Selecionar e mover pontos, criar pontos com RMB."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Criar pontos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Apagar pontos."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Ponto"
@@ -3616,7 +3593,6 @@ msgstr ""
"de recolher nome das faixas."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Adicionar Nó.."
@@ -4153,7 +4129,7 @@ msgstr "Todos"
msgid "Plugins"
msgstr "Plugins"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Ordenar:"
@@ -4201,7 +4177,7 @@ msgid ""
"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
"Light' flag is on."
msgstr ""
-"Não há Meshes para cozinhar. Assegure-se que contêm um canal UV2 e que a "
+"Não há Meshes para consolidar. Assegure-se que contêm um canal UV2 e que a "
"referência 'Bake Light' flag está on."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -4210,7 +4186,7 @@ msgstr "Falha ao criar imagens lightmap, assegure-se que o caminho é gravável.
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr "Cozinhar Lightmaps"
+msgstr "Consolidar Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp
@@ -4282,9 +4258,8 @@ msgid "Resize CanvasItem"
msgstr "Redimensionar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Rodar CanvasItem"
+msgstr "Escalar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4307,18 +4282,19 @@ msgid "Paste Pose"
msgstr "Colar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Diminuir zoom"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Repor zoom"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Aumentar zoom"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Modo seleção"
@@ -4348,9 +4324,8 @@ msgid "Rotate Mode"
msgstr "Modo rodar"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Modo escalar (R)"
+msgstr "Modo Escalar"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4449,9 +4424,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Restaura a capacidade de selecionar os Objetos-filho."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Esqueleto"
+msgstr "Opções do Esqueleto"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4505,7 +4479,7 @@ msgstr "Mostrar Vista"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Mostrar Grupo e Bloquear Ãcones"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4578,8 +4552,17 @@ msgstr ""
"Arrastar & largar + Alt : Altera o tipo de Nó"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Criar Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Criar Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar Polígono"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar Poly (Remover Ponto)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4665,7 +4648,7 @@ msgstr "Pressione Shift para editar tangentes individualmente"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr "Cozinhar a sonda GI"
+msgstr "Consolidar Sonda GI"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
@@ -4680,37 +4663,9 @@ msgid "Item List Editor"
msgstr "Editor da lista de itens"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Não há recurso OccluderPolygon2D neste Nó.\n"
-"Criar um e associar?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Criar Polígono oclusor"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Criar um novo Polígono a partir do zero."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Editar Polígono existente:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Mover Ponto."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Separar segmento."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Apagar Ponto."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "A Malha está vazia!"
@@ -4946,9 +4901,8 @@ msgid "Create Navigation Polygon"
msgstr "Criar Polígono de navegação"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Gerar Visibilidade do Rect"
+msgstr "A Gerar Visibilidade Rect"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5079,6 +5033,11 @@ msgid "Add Point to Curve"
msgstr "Adicionar Ponto à curva"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Fechar curva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Mover Ponto na curva"
@@ -5106,6 +5065,11 @@ msgid "Click: Add Point"
msgstr "Clique: Adicionar Ponto"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Separar segmento (na curva)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Clique direito: Apagar Ponto"
@@ -5121,11 +5085,6 @@ msgstr "Adicionar Ponto (num espaço vazio)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Separar segmento (na curva)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Apagar Ponto"
@@ -5182,6 +5141,10 @@ msgstr "Remover Ponto Out-Control"
msgid "Remove In-Control Point"
msgstr "Remover Ponto In-Control"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Separar segmento (na curva)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Mover Junta"
@@ -5192,10 +5155,17 @@ msgid ""
msgstr "A propriedade esqueleto do Polygon2D não aponta para um nó Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Sinc ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Criar mapa UV"
@@ -5232,10 +5202,21 @@ msgid "Transform UV Map"
msgstr "Transformar mapa UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tipo de transformação"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Pintar pesos dos ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor UV de Polígono 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor UV de Polígono 2D"
@@ -5256,11 +5237,8 @@ msgid "Bones"
msgstr "Ossos"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Criar Polígono"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Mover Ponto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5288,19 +5266,23 @@ msgid "Scale Polygon"
msgstr "Escalar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Conectar dois pontos para fazer uma divisão"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Selecione uma separação para a apagar"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Pintar pesos com intensidade específica"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "Não pintar pesos com intensidade específica"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5426,7 +5408,6 @@ msgid "Error writing TextFile:"
msgstr "Erro ao escrever TextFile:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
msgstr "Erro ao carregar ficheiro."
@@ -5439,19 +5420,23 @@ msgid "Error saving file!"
msgstr "Erro ao guardar ficheiro!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Erro ao guardar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Erro ao guardar"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Erro ao importar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Erro ao importar"
#: editor/plugins/script_editor_plugin.cpp
@@ -5471,6 +5456,14 @@ msgid "Import Theme"
msgstr "Importar tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Erro ao guardar tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Erro ao guardar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Guardar tema como..."
@@ -5511,8 +5504,9 @@ msgid "File"
msgstr "Ficheiro"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Novo TextFile"
+#, fuzzy
+msgid "Open..."
+msgstr "Abrir"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5527,9 +5521,8 @@ msgid "Copy Script Path"
msgstr "Copiar Caminho do Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
-msgstr "Histórico anterior"
+msgstr "Histórico Anterior"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Next"
@@ -5541,6 +5534,11 @@ msgid "Theme"
msgstr "Tema"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Importar tema"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Recarregar tema"
@@ -5549,10 +5547,6 @@ msgid "Save Theme"
msgstr "Guardar tema"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Guardar tema como"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Fechar documentos"
@@ -5599,9 +5593,8 @@ msgid "Keep Debugger Open"
msgstr "Manter depurador aberto"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
-msgstr "Depurar com Editor externo"
+msgstr "Depurar com Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -5644,9 +5637,8 @@ msgid "Debugger"
msgstr "Depurador"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
-msgstr "Resultados da pesquisa"
+msgstr "Resultados da Pesquisa"
#: editor/plugins/script_text_editor.cpp
msgid "Line"
@@ -5657,9 +5649,12 @@ msgid "(ignore)"
msgstr "(ignorar)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Ir para Função..."
+msgstr "Ir para Função"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Padrão"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5693,10 +5688,6 @@ msgstr "Capitalizar"
msgid "Syntax Highlighter"
msgstr "Destaque de Sintaxe"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Padrão"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5748,14 +5739,12 @@ msgid "Trim Trailing Whitespace"
msgstr "Apagar espaços nos limites"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
-msgstr "Converter Indentação em espaços"
+msgstr "Converter Indentação em Espaços"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
-msgstr "Converter Indentação em tabulação"
+msgstr "Converter Indentação em Tabulação"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5771,33 +5760,28 @@ msgid "Remove All Breakpoints"
msgstr "Remover todos os Breakpoints"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
-msgstr "Ir para próximo Breakpoint"
+msgstr "Ir para Próximo Breakpoint"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
-msgstr "Ir para Breakpoint anterior"
+msgstr "Ir para Breakpoint Anterior"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
msgstr "Localizar Anterior"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
-msgstr "Localizar em ficheiros..."
+msgstr "Localizar em Ficheiros..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Ir para Função..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
-msgstr "Ir para linha..."
+msgstr "Ir para Linha..."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
@@ -5888,13 +5872,12 @@ msgid "Animation Key Inserted."
msgstr "Chave de Animação inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Trocar"
+msgstr "Inclinação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Direção"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -5982,7 +5965,7 @@ msgstr "Esta operação requer um único Nó selecionado."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Lock View Rotation"
-msgstr "Trancar Rotação da Vista"
+msgstr "Bloquear Rotação da Vista"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
@@ -6061,9 +6044,8 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de velocidade Freelook"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "Trancar Rotação da Vista"
+msgstr "Rotação da Vista Bloqueada"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6097,7 +6079,7 @@ msgstr "Modo escalar (R)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
-msgstr "Coordenadas locais"
+msgstr "Coordenadas Locais"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Space Mode (%s)"
@@ -6397,12 +6379,18 @@ msgid "Set Region Rect"
msgstr "Definir região Rect"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Definir Manipulador"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Ajuste:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Nenhum>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nenhum"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6565,9 +6553,8 @@ msgid "Fix Invalid Tiles"
msgstr "Reparar Tiles inválidos"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Centrar seleção"
+msgstr "Cortar Seleção"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6614,39 +6601,37 @@ msgid "Pick Tile"
msgstr "Escolher Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Mover Seleção"
+msgstr "Copiar Seleção"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Modo rodar"
+msgstr "Rodar p/ esquerda"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Rodar Polígono"
+msgstr "Rodar p/ direita"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Inverter horizontalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Inverter verticalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Transformar"
+msgstr "Limpar Transformação"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Adicionar Textura(s) ao TIleSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Remover Textura atual do TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6658,21 +6643,40 @@ msgid "Merge from Scene"
msgstr "Fundir a partir da Cena"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Selecionar sub-tile para usar como ícone, também será usado em ligações "
-"autotile inválidas."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Exibir nome dos tiles (segure tecla Alt)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Colar Animação"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Erase bitmask."
+msgstr "Apagar pontos."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Criar um novo Polígono a partir do zero."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Exibir nome dos tiles (segure tecla Alt)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
-msgstr "Remover Textura Selecionada e TODOS OS TILES que a usam?"
+msgstr "Remover textura selecionada e TODOS OS TILES que a usam?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
@@ -6687,9 +6691,8 @@ msgid "Merge from scene?"
msgstr "Fundir a partir da Cena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " ficheiro(s) não foi adicionado por já estar na lista."
+msgstr "%s ficheiro(s) não foi/foram adicionado(s) por já estar(em) na lista."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6700,21 +6703,32 @@ msgstr ""
"Clique em outro Tile para o editar."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Apagar arquivos selecionados?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"LMB: definir bit on.\n"
-"RMB: definir bit off.\n"
+"Selecionar o sub-tile editado.\n"
"Clique em outro Tile para o editar."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Apagar Pontos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Selecionar o sub-tile editado.\n"
+"LMB: definir bit on.\n"
+"RMB: definir bit off.\n"
"Clique em outro Tile para o editar."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6736,11 +6750,21 @@ msgstr ""
"Clique em outro Tile para o editar."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Selecionar sub-tile para alterar a sua prioridade.\n"
+"Clique em outro Tile para o editar."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Esta propriedade não pode ser alterada."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Conjunto de tiles"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6756,6 +6780,11 @@ msgid "Light"
msgstr "Luz"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Adicionar Nó.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VIsualShader"
@@ -6778,12 +6807,11 @@ msgstr ""
#: editor/project_export.cpp
msgid "Release"
-msgstr ""
+msgstr "Libertar"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "Exportar"
+msgstr "A Exportar Tudo"
#: editor/project_export.cpp
msgid "Presets"
@@ -6795,8 +6823,8 @@ msgstr "Adicionar..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "Exportar Projeto"
+msgid "Export Path"
+msgstr "Caminho da Exportação:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6861,14 +6889,12 @@ msgid "Export PCK/Zip"
msgstr "Exportar PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Modo exportação:"
+msgstr "Modo Exportação?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "Exportar"
+msgstr "Exportar Tudo"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7515,7 +7541,7 @@ msgstr "Nome do Nó"
#: editor/rename_dialog.cpp
msgid "Node's parent name, if available"
-msgstr "Nome do pai do Nó, se disponível"
+msgstr "Nome do parente do Nó, se disponível"
#: editor/rename_dialog.cpp
msgid "Node type"
@@ -7554,7 +7580,6 @@ msgid "Step"
msgstr "Passo"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "Valor pelo qual cada contador é incrementado para cada nó"
@@ -7563,7 +7588,6 @@ msgid "Padding"
msgstr "Preenchimento"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7617,7 +7641,7 @@ msgstr "Recolocar Nó"
#: editor/reparent_dialog.cpp
msgid "Reparent Location (Select new Parent):"
-msgstr "Recolocar localização (selecionar novo parente):"
+msgstr "Recolocar localização (selecionar novo Parente):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
@@ -7681,11 +7705,11 @@ msgstr "Esta operação não pode ser feita na raiz da árvore."
#: editor/scene_tree_dock.cpp
msgid "Move Node In Parent"
-msgstr "Mover Nó no parente"
+msgstr "Mover Nó no Parente"
#: editor/scene_tree_dock.cpp
msgid "Move Nodes In Parent"
-msgstr "Mover Nós no parente"
+msgstr "Mover Nós no Parente"
#: editor/scene_tree_dock.cpp
msgid "Duplicate Node(s)"
@@ -7712,6 +7736,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Desativar \"editable_instance\" irá reverter todas as propriedades do Nó "
+"para os seus valores padrão."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7786,9 +7812,8 @@ msgid "Clear Inheritance"
msgstr "Limpar herança"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Abrir documentação online do Godot"
+msgstr "Abrir documentação"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7803,9 +7828,8 @@ msgid "Change Type"
msgstr "Mudar tipo"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Abrir Script"
+msgstr "Estender Script"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7968,9 +7992,8 @@ msgid "Path is empty"
msgstr "Caminho está vazio"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Sprite está vazia!"
+msgstr "Nome do ficheiro vazio"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8061,9 +8084,8 @@ msgid "Bytes:"
msgstr "Bytes:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "Empilhar Frames"
+msgstr "Rastreamento de Pilha"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8290,7 +8312,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "o argumento \"step\" é zero!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8513,7 +8536,7 @@ msgstr "Fim do stack trace de exceção interna"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "Consolidar NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8621,7 +8644,7 @@ msgstr "Mudar nome do argumento"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Default Value"
-msgstr "Definir valor padrão da variável"
+msgstr "Definir Valor Padrão da Variável"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Type"
@@ -8857,7 +8880,7 @@ msgstr "Objeto de base não é um Nó!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
-msgstr "Caminho não aponta para Nó!"
+msgstr "Caminho não conduz Nó!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
@@ -8897,12 +8920,11 @@ msgstr "Procurar VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Obter %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Definir "
+msgstr "Definir %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -8934,7 +8956,7 @@ msgstr "Impossível ler Ficheiro de imagem do ecrã de inicialização:"
#: platform/javascript/export/export.cpp
msgid "Using default boot splash image."
-msgstr "A usar imagem de inicialização por defeito."
+msgstr "A usar imagem padrão de inicialização."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -9001,6 +9023,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animação CPUParticles2D requer o uso de um CanvasItemMaterial com "
+"\"Particles Animation\" ativada."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9057,6 +9081,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Animação Particles2D requer o uso de um CanvasItemMaterial com \"Particles "
+"Animation\" ativada."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9085,7 +9111,7 @@ msgstr "Esta corrente de Bone2D deve terminar em um nó Skeleton2D."
#: scene/2d/skeleton_2d.cpp
msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr "Um Bone2D só funciona com um nó pai Skeleton2D ou Bone2D."
+msgstr "Um Bone2D só funciona com um nó parente Skeleton2D ou Bone2D."
#: scene/2d/skeleton_2d.cpp
msgid ""
@@ -9200,16 +9226,16 @@ msgstr ""
"recurso forma!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
-"Nada é visível porque não foram atribuídas Meshes aos passos de desenho."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Nada é visível porque nenhuma Malha foi atribuída."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"Animação CPUParticles requer o uso de um SpatialMaterial com \"Billboard "
+"Particles\" ativada."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9240,22 +9266,24 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"Animação Particles requer o uso de um SpatialMaterial com \"Billboard "
+"Particles\" ativada."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-"PathFollow2D apenas funciona quando definido como filho de um Nó Path2D."
+msgstr "PathFollow apenas funciona quando definido como filho de um Nó Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
-"PathFollow2D apenas funciona quando definido como filho de um Nó Path2D."
+"OrientedPathFollow apenas funciona quando definido como filho de um Nó Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
-msgstr ""
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
+msgstr "OrientedPathFollow requer vetores cima ativados no Caminho do parente."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9297,7 +9325,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Este corpo será ignorado até se definir uma Malha"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9305,7 +9332,7 @@ msgid ""
msgstr ""
"Mudanças no tamanho do SoftBody serão reescritas pelo motor de física na "
"execução.\n"
-"Mude antes o tamanho das formas de colisão filhas."
+"Em vez disso, mude o tamanho das formas de colisão filhas."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -9361,6 +9388,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "A raiz de AnimationPlayer não é um nó válido."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Modo Raw"
@@ -9377,6 +9408,10 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirme por favor..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9389,7 +9424,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Se exp_edit é verdadeiro min_value tem de ser > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9410,7 +9445,7 @@ msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
-"Ambiente padrão especificado em Configuração do Projeto (Rendering -> "
+"Ambiente Padrão especificado em Configuração do Projeto (Rendering -> "
"Environment -> Default Environment) não pode ser carregado."
#: scene/main/viewport.cpp
@@ -9445,10 +9480,6 @@ msgstr "Tamanho de letra inválido."
msgid "Input"
msgstr "Entrada"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nenhum"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Fonte inválida para Shader."
@@ -9465,6 +9496,59 @@ msgstr "Atribuição a uniforme."
msgid "Varyings can only be assigned in vertex function."
msgstr "Variações só podem ser atribuídas na função vértice."
+#~ msgid "Create Poly"
+#~ msgstr "Criar Polígono"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Criar um novo Polígono de raíz"
+
+#~ msgid "Zoom out"
+#~ msgstr "Diminuir zoom"
+
+#~ msgid "Zoom in"
+#~ msgstr "Aumentar zoom"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Criar Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Não há recurso OccluderPolygon2D neste Nó.\n"
+#~ "Criar um e associar?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Editar Polígono existente:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Mover Ponto."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Separar segmento."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Apagar Ponto."
+
+#~ msgid "New TextFile"
+#~ msgstr "Novo TextFile"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Guardar tema como"
+
+#~ msgid "<None>"
+#~ msgstr "<Nenhum>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Selecionar sub-tile para usar como ícone, também será usado em ligações "
+#~ "autotile inválidas."
+
+#~ msgid "Zoom:"
+#~ msgstr "Zoom:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Está seguro que quer remover todas as conexões de \""
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 9359389f36..12af1a8c2c 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -10,16 +10,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-08-31 18:22+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: Nitroretro <nitroretro@protonmail.com>\n"
"Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ro/>\n"
"Language: ro\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -264,7 +266,6 @@ msgstr "Creați %d piste NOI și inserați cheie?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -541,15 +542,19 @@ msgstr "Înlocuiți Tot"
msgid "Selection Only"
msgstr "Numai Selecția"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom-ați În"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zoom-ați Afară"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Resetați Zoom-area"
@@ -559,8 +564,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Zoom-ați În"
+msgid "Font Size:"
+msgstr "Dimensiunea Conturului:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -726,8 +731,8 @@ msgid "Recent:"
msgstr "Recent:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Cautați:"
@@ -778,8 +783,7 @@ msgid "Resource"
msgstr "Resursă"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Cale"
@@ -1244,8 +1248,7 @@ msgid "Node Name:"
msgstr "Nume Nod:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nume"
@@ -1729,6 +1732,12 @@ msgstr "Aceasta operațiune nu se poate face fără o rădăcină de copac."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2174,7 +2183,7 @@ msgid "Undo"
msgstr "Revenire"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Reîntoarcere"
@@ -2198,7 +2207,7 @@ msgstr "Setări ale Proiectului"
msgid "Export"
msgstr "Exportare"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Unelte"
@@ -2635,6 +2644,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2651,8 +2666,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3086,7 +3100,7 @@ msgstr "Duplicați..."
msgid "Move To..."
msgstr "Mută În..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Deschide un script rapid..."
@@ -3229,7 +3243,7 @@ msgstr "EROARE: Numele animației există deja!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Nume nevalid."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3485,14 +3499,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Crează Poligon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Editează Poligon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3500,25 +3514,28 @@ msgid "Insert Point"
msgstr "Inserează Punct"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Editează Poligon (Elimină Punct)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Elimină Poligon Și Punct"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Crează un nou poligon de la zero"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Șterge puncte"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Editează poligon existent:\n"
"LMB: Mută Punct.\n"
@@ -3526,8 +3543,10 @@ msgstr ""
"RMB: Șterge Punct."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Șterge puncte"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "RMB: Șterge Punctul."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3573,17 +3592,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Șterge puncte"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Șterge Punctul."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Deplasare punct"
@@ -3661,7 +3669,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4212,7 +4219,7 @@ msgstr "Toate"
msgid "Plugins"
msgstr "Plugin-uri"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sorare:"
@@ -4373,21 +4380,19 @@ msgid "Paste Pose"
msgstr "Lipește Postura"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zoom-ați Afară"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zoom-ați Afară"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zoom-ați În"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Mod Selectare"
@@ -4653,8 +4658,17 @@ msgstr ""
"Trage & lasă + Shift: Schimbă tipul nodului"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Creează Poligon3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Crează Poligon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editează Poligon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editează Poligon (Elimină Punct)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4756,37 +4770,9 @@ msgid "Item List Editor"
msgstr "Editor Lista de Obiect"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Nicio resursă OccluderPolygon2D în acest nod.\n"
-"Vrei să creezi și să atribui una?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Creează Poligon de Ocluziune"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Creează un nou poligon de la zero."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Editează poligonul existent:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Mișcă Punctul."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+LMB: Despică Segmentul."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Șterge Punctul."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh-ul este gol!"
@@ -5157,6 +5143,11 @@ msgid "Add Point to Curve"
msgstr "Adăugare punct pe curbă"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Închidere curbă"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Deplasare punct pe curbă"
@@ -5184,6 +5175,11 @@ msgid "Click: Add Point"
msgstr "Click: Adăugare punct"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Divizare segment (pe curbă)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Click Drept: Ștergere punct"
@@ -5199,11 +5195,6 @@ msgstr "Adăugare punct (într-un spațiu gol)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Divizare segment (pe curbă)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Stergere punct"
@@ -5260,6 +5251,10 @@ msgstr "Ștergere punct de Control-Ieșire"
msgid "Remove In-Control Point"
msgstr "Ștergere punct de Control-Intrare"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Divizare segment (pe curbă)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5272,10 +5267,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Arată Oasele"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Creare hartă UV"
@@ -5317,10 +5318,20 @@ msgid "Transform UV Map"
msgstr "Transformare hartă UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Crează Poligon"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Editor UV de poligoane 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Editor UV de poligoane 2D"
@@ -5345,11 +5356,7 @@ msgstr "Creează Oase"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Crează Poligon"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Deplasare punct"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5377,19 +5384,19 @@ msgid "Scale Polygon"
msgstr "Redimensionează Poligon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5539,20 +5546,24 @@ msgid "Error saving file!"
msgstr "Eroare la salvarea TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Eroare la salvare."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Eroare mutând:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Eroare mutând:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Eroare mutând:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5574,6 +5585,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5615,8 +5634,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Vizualizează Fișierele"
+msgid "Open..."
+msgstr "Deschide"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5645,15 +5664,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Se Importa Scena..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5764,6 +5784,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Faceți Funcția"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5796,10 +5820,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6504,11 +6524,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Setează Mâner"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Mod Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6751,12 +6777,13 @@ msgid "Clear transform"
msgstr "Anim Schimbare transformare"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "Elimină Obiectul Selectat"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6767,13 +6794,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Lipește Animație"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "RMB: Șterge Punctul."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Creează un nou poligon de la zero."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6803,15 +6851,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Ştergeți fişierele selectate?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Șterge puncte"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6829,13 +6887,20 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "This property can't be changed."
msgstr "Această operație nu se poate face fără o scenă."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
-msgstr ""
+#, fuzzy
+msgid "TileSet"
+msgstr "Set_de_Plăci..."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vertex"
@@ -6850,6 +6915,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6888,7 +6957,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Exportă Proiectul"
#: editor/project_export.cpp
@@ -8367,7 +8436,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9215,7 +9284,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9258,7 +9327,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9351,6 +9422,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Arborele Animației este nevalid."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9367,6 +9442,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9424,10 +9503,6 @@ msgstr ""
msgid "Input"
msgstr "Adaugă Intrare(Input)"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9444,6 +9519,50 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Crează Poligon"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Crează un nou poligon de la zero"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zoom-ați Afară"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zoom-ați În"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Creează Poligon3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Nicio resursă OccluderPolygon2D în acest nod.\n"
+#~ "Vrei să creezi și să atribui una?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Editează poligonul existent:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Mișcă Punctul."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+LMB: Despică Segmentul."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Șterge Punctul."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Vizualizează Fișierele"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zoom-ați În"
+
#~ msgid "Class List:"
#~ msgstr "Listă de Clase:"
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 957af1f5e7..1fe2a21656 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -28,11 +28,13 @@
# V. <Unit68189@gmail.com>, 2018.
# Victor Butorin <mrwebsterchannel@gmail.com>, 2018.
# ÐлекÑандр <ol-vin@mail.ru>, 2018.
+# Ðнатолий Горбунов <afgorbunov@gmail.com>, 2018.
+# Vadim Vergasov <vadim.vergasov2003@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-11-26 16:10+0000\n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: ÐлекÑандр <ol-vin@mail.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -42,7 +44,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -91,11 +93,12 @@ msgstr "ОÑвободить"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
-msgstr "СбаланÑированно"
+msgstr "СбаланÑированный"
#: editor/animation_bezier_editor.cpp
+#, fuzzy
msgid "Mirror"
-msgstr "Отобразить зеркально"
+msgstr "Зеркало"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
@@ -277,7 +280,6 @@ msgstr "Создать %d новые дорожки и вÑтавить ключ
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -424,12 +426,10 @@ msgid "Delete Selection"
msgstr "Удалить выделенное"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "Перейти к Ñледующему шагу"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
msgstr "Перейти к предыдущему шагу"
@@ -553,15 +553,19 @@ msgstr "Заменить вÑÑ‘"
msgid "Selection Only"
msgstr "Только выделÑÑ‚ÑŒ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Приблизить"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Отдалить"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "СброÑить приближение"
@@ -570,8 +574,8 @@ msgid "Warnings:"
msgstr "ПредупреждениÑ:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "Приближение:"
+msgid "Font Size:"
+msgstr "Размер шрифта:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -684,9 +688,8 @@ msgid "Edit Connection: "
msgstr "Редактировать Подключение: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñигнала?"
+msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· Ñигнала \"%s\"?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -731,8 +734,8 @@ msgid "Recent:"
msgstr "Ðедавнее:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "ПоиÑк:"
@@ -783,8 +786,7 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Путь"
@@ -840,7 +842,6 @@ msgid "Error loading:"
msgstr "Ошибка при загрузке:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
msgstr "Ðе удалоÑÑŒ загрузить Ñцену из-за отÑутÑÑ‚Ð²Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑтей:"
@@ -1249,8 +1250,7 @@ msgid "Node Name:"
msgstr "Ð˜Ð¼Ñ Ð£Ð·Ð»Ð°:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ИмÑ"
@@ -1328,7 +1328,6 @@ msgid "File Exists, Overwrite?"
msgstr "Файл ÑущеÑтвует, перезапиÑать?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
msgstr "Выбрать Ñту папку"
@@ -1337,13 +1336,11 @@ msgid "Copy Path"
msgstr "Копировать путь"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "ПроÑмотреть в проводнике"
+msgstr "Открыть в проводнике"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
msgstr "ПроÑмотреть в проводнике"
@@ -1488,19 +1485,16 @@ msgid "Methods"
msgstr "Методы"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Методы"
+msgstr "Методы:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "СвойÑтва"
+msgstr "СвойÑтва темы"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "СвойÑтва:"
+msgstr "СвойÑтва темы:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1527,14 +1521,12 @@ msgid "Constants:"
msgstr "КонÑтанты:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "ОпиÑание"
+msgstr "ОпиÑание клаÑÑа"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "ОпиÑание:"
+msgstr "ОпиÑание клаÑÑа:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1551,12 +1543,10 @@ msgstr ""
"$url2]запроÑить[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "ОпиÑание ÑвойÑтв:"
+msgstr "ОпиÑание ÑвойÑтв"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
msgstr "ОпиÑание ÑвойÑтв:"
@@ -1569,12 +1559,10 @@ msgstr ""
"$color][url=$url]помогите нам[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "ОпиÑание методов:"
+msgstr "ОпиÑание методов"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
msgstr "ОпиÑание методов:"
@@ -1592,49 +1580,40 @@ msgid "Search Help"
msgstr "Помощь"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Режим нормалей"
+msgstr "Отображать вÑÑ‘"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "КлаÑÑÑ‹"
+msgstr "Только клаÑÑÑ‹"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Методы"
+msgstr "Только методы"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Сигналы"
+msgstr "Только Ñигналы"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "КонÑтанты"
+msgstr "Только конÑтанты"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "СвойÑтва"
+msgstr "Только ÑвойÑтва"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "СвойÑтва"
+msgstr "Только ÑвойÑтва темы"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "СвойÑтва"
+msgstr "Тип члена"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "КлаÑÑ:"
+msgstr "КлаÑÑ"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1733,6 +1712,15 @@ msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена бе
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Эта Ñцена не может быть Ñохранена, потому что еÑÑ‚ÑŒ цикличеÑкое Ñоздание "
+"ÑÑылок.\n"
+"ПожалуйÑта, решите проблему, а затем повторите попытку ÑохранениÑ."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1741,7 +1729,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Ðевозможно перезапиÑать Ñцену, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñе еще открыта!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1996,13 +1984,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Ðе удалоÑÑŒ загрузить Ñкрипт из иÑточника: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Ðе удалоÑÑŒ загрузить Ñкрипт из иÑточника: '%s' Ñкрипт не в режиме "
-"инÑтрумента."
+"Ðевозможно загрузить Ñкрипт аддона из иÑточника: \"% s\". Ð’ коде еÑÑ‚ÑŒ "
+"ошибка. ПожалуйÑта, проверьте ÑинтакÑиÑ."
#: editor/editor_node.cpp
msgid ""
@@ -2057,7 +2044,6 @@ msgstr "По умолчанию"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
msgstr "Показать в файловой ÑиÑтеме"
@@ -2142,7 +2128,6 @@ msgid "Save Scene"
msgstr "Сохранить Ñцену"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Сохранить вÑе Ñцены"
@@ -2172,7 +2157,7 @@ msgid "Undo"
msgstr "Отменить"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Повторить"
@@ -2196,7 +2181,7 @@ msgstr "Параметры проекта"
msgid "Export"
msgstr "ЭкÑпорт"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ИнÑтрументы"
@@ -2318,11 +2303,11 @@ msgstr "Переключить полноÑкранный режим"
#: editor/editor_node.cpp
msgid "Open Editor Data/Settings Folder"
-msgstr "Открыть папку Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Редактора"
+msgstr "Открыть папку данных/наÑтроек редактора"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
-msgstr "Открыть директорию Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ редактора"
+msgstr "Открыть папку данных редактора"
#: editor/editor_node.cpp
msgid "Open Editor Settings Folder"
@@ -2626,9 +2611,17 @@ msgstr "Ðазначить.."
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Ðевозможно Ñоздать ViewportTexture Ð´Ð»Ñ Ñ€ÐµÑурÑов, Ñохраненных в виде файла.\n"
+"РеÑÑƒÑ€Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ принадлежать Ñцене."
#: editor/editor_properties.cpp
msgid ""
@@ -2637,13 +2630,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Ðевозможно Ñоздать ViewportTexture Ð´Ð»Ñ Ñтого реÑурÑа, потому что он не "
+"уÑтановлен как локальный Ð´Ð»Ñ Ñцены.\n"
+"Включите ÑвойÑтво «Локально Ð´Ð»Ñ Ñцены» (и вÑе реÑурÑÑ‹, Ñодержащие его вверх "
+"от узла)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Выберите Viewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Ðовый Ñкрипт"
@@ -2796,7 +2792,7 @@ msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпÐ
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ðеверный формат version.txt у шаблона. %s."
+msgstr "ÐедейÑтвительный формат version.txt внутри шаблонов: %s."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
@@ -2943,7 +2939,7 @@ msgstr "Загрузить Шаблоны"
#: editor/export_template_manager.cpp
msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Выберите зеркало из ÑпиÑка: (Shift+Click: Открыть в Браузере)"
+msgstr "Выберите зеркало из ÑпиÑка: (Shift+Click: Открыть в браузере)"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -2952,9 +2948,8 @@ msgstr ""
"типов файлов!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Избранное:"
+msgstr "Избранное"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3040,14 +3035,12 @@ msgid "Instance"
msgstr "Добавить ÑкземплÑÑ€"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Избранное:"
+msgstr "Добавить в избранное"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Удалить из группы"
+msgstr "Удалить из избранного"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3069,7 +3062,7 @@ msgstr "Дублировать..."
msgid "Move To..."
msgstr "ПеремеÑтить в..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Ðовый Ñкрипт."
@@ -3078,12 +3071,10 @@ msgid "New Resource..."
msgstr "Ðовый реÑурÑ..."
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "Развернуть вÑе"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "Свернуть вÑе"
@@ -3107,9 +3098,8 @@ msgid "Re-Scan Filesystem"
msgstr "ПереÑканировать файловую ÑиÑтему"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Переключить режим отображениÑ"
+msgstr "Переключить режим разделениÑ"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3144,24 +3134,20 @@ msgid "Create Script"
msgstr "Создать Ñкрипт"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Ðайти в файлах"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Ðайти: "
+msgstr "Ðайти:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Папка: "
+msgstr "Папка:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Фильтры"
+msgstr "Фильтры:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3201,7 +3187,8 @@ msgid "Group name already exists."
msgstr "Ð˜Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ уже ÑущеÑтвует."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "недопуÑтимое Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3338,12 +3325,10 @@ msgid "Failed to load resource."
msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Развернуть вÑе ÑвойÑтва"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Свернуть вÑе ÑвойÑтва"
@@ -3449,14 +3434,13 @@ msgid "Activate now?"
msgstr "Ðктивировать ÑейчаÑ?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Создан полигон"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
+msgstr "Создать Полигон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Редактировать полигон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3464,25 +3448,27 @@ msgid "Insert Point"
msgstr "Ð’Ñтавить точку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Редактировать полигон (удалить точку)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Удалить полигон и точку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Создать точки."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Редактирование полигона:\n"
"ЛКМ: перемеÑтить точку.\n"
@@ -3490,8 +3476,9 @@ msgstr ""
"ПКМ: удалить точку."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Удалить точку"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Удалить точки."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3539,15 +3526,6 @@ msgstr "Выбирайте, перемещайте и Ñоздавайте тоÑ
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Создать точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Удалить точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Точка"
@@ -3626,7 +3604,6 @@ msgstr ""
"удаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ отÑлеживаемые имена."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Добавить Узел.."
@@ -4166,7 +4143,7 @@ msgstr "Ð’Ñе"
msgid "Plugins"
msgstr "Плагины"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Сортировать:"
@@ -4296,7 +4273,6 @@ msgid "Resize CanvasItem"
msgstr "Изменить размер CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
msgstr "Вращать CanvasItem"
@@ -4321,18 +4297,19 @@ msgid "Paste Pose"
msgstr "Ð’Ñтавить позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Уменьшить"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "СброÑить маÑштаб"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Увеличить"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Режим выделениÑ"
@@ -4363,9 +4340,8 @@ msgid "Rotate Mode"
msgstr "Режим поворота"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Режим маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (R)"
+msgstr "Режим маÑштабированиÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4464,9 +4440,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "ВоÑÑтанавливает возможноÑÑ‚ÑŒ выбора потомков объекта."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "Скелет"
+msgstr "Опции Ñкелета"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4520,7 +4495,7 @@ msgstr "Показать окно проÑмотра"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Показать группу и заблокировать иконки"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4593,8 +4568,17 @@ msgstr ""
"Drag & drop + Alt : Изменить тип узла"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Создан Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Создать Полигон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Редактировать полигон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Редактировать полигон (удалить точку)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4695,37 +4679,9 @@ msgid "Item List Editor"
msgstr "Редактор ÑпиÑка Ñлементов"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Ðет OccluderPolygon2D реÑурÑа у Ñтого узла.\n"
-"Создать и назначить?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Создан затенÑющий полигон"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Редактировать ÑущеÑтвующий полигон:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "ЛКМ: Передвинуть точку."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+ЛКМ: Разделить Ñегмент."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "ПКМ: Удалить точку."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "ПолиÑетка пуÑта!"
@@ -4961,7 +4917,6 @@ msgid "Create Navigation Polygon"
msgstr "Создать Navigation Polygon"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
msgstr "Создать облаÑÑ‚ÑŒ видимоÑти"
@@ -5094,6 +5049,11 @@ msgid "Add Point to Curve"
msgstr "Добавить точку к кривой"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Сомкнуть кривую"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Точка кривой передвинута"
@@ -5121,6 +5081,11 @@ msgid "Click: Add Point"
msgstr "ЛКМ: Добавить точку"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Разделить Ñегмент (в кривой)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "ПКМ: Удалить точку"
@@ -5136,11 +5101,6 @@ msgstr "Добавить точку (в пуÑтом проÑтранÑтрве)
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Разделить Ñегмент (в кривой)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Удалить точку"
@@ -5197,6 +5157,10 @@ msgstr "Удалить выходную контрольную точку"
msgid "Remove In-Control Point"
msgstr "Удалить входную контрольную точку"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Разделить Ñегмент (в кривой)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "Передвинуть ÑуÑтав"
@@ -5207,10 +5171,20 @@ msgid ""
msgstr "СвойÑтво Ñкелета Polygon2D не указывает на узел Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Синхронизировать коÑти"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+"Ð’ Ñтом узле нет текÑтуры.\n"
+"Выберите текÑтуру, чтобы редактировать облаÑÑ‚ÑŒ."
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Создать UV карту"
@@ -5223,7 +5197,6 @@ msgid "Split point with itself."
msgstr "Точка разделениÑ."
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split can't form an existing edge."
msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð´ÐµÐ»Ð¸Ñ‚ÑŒ от ÑущеÑтвующего краÑ."
@@ -5248,10 +5221,21 @@ msgid "Transform UV Map"
msgstr "Преобразовать UV карту"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Тип преобразованиÑ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "РиÑовать веÑа коÑтей"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Polygon 2D UV редактор"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Polygon 2D UV редактор"
@@ -5272,11 +5256,8 @@ msgid "Bones"
msgstr "КоÑти"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Создать Полигон"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "Передвинуть точку"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5304,19 +5285,23 @@ msgid "Scale Polygon"
msgstr "МаÑштабировать полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "Соединить две точки, чтобы Ñоздать разделение"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Выберите разделение, чтобы Ñтереть его"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "КраÑить веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "СнÑÑ‚ÑŒ краÑку веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5442,9 +5427,8 @@ msgid "Error writing TextFile:"
msgstr "Ошибка при запиÑи:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "Ðе удалоÑÑŒ загрузить файл."
+msgstr "Ошибка: Ðе удалоÑÑŒ загрузить файл."
#: editor/plugins/script_editor_plugin.cpp
msgid "Error could not load file."
@@ -5455,19 +5439,23 @@ msgid "Error saving file!"
msgstr "Ошибка при Ñохранении файла!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ¼Ñ‹"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Ошибка ÑохранениÑ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Ошибка Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ¼Ñ‹"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Ошибка импортированиÑ"
#: editor/plugins/script_editor_plugin.cpp
@@ -5487,6 +5475,14 @@ msgid "Import Theme"
msgstr "Импортировать тему"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ¼Ñ‹"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Ошибка ÑохранениÑ"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Сохранить тему как..."
@@ -5527,8 +5523,9 @@ msgid "File"
msgstr "Файл"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Ðовый текÑтовый файл"
+#, fuzzy
+msgid "Open..."
+msgstr "Открыть"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5543,7 +5540,6 @@ msgid "Copy Script Path"
msgstr "Копировать путь к Ñкрипту"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "Предыдущий файл"
@@ -5557,6 +5553,11 @@ msgid "Theme"
msgstr "Тема"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Импортировать тему"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Перезагрузить тему"
@@ -5565,10 +5566,6 @@ msgid "Save Theme"
msgstr "Сохранить тему"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Сохранить тему как"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Закрыть документацию"
@@ -5615,7 +5612,6 @@ msgid "Keep Debugger Open"
msgstr "ОÑтавить отладчик открытым"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
msgstr "Отладка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ внешнего редактора"
@@ -5660,7 +5656,6 @@ msgid "Debugger"
msgstr "Отладчик"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "Результаты поиÑка"
@@ -5673,9 +5668,12 @@ msgid "(ignore)"
msgstr "(игнорировать)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Перейти к функции..."
+msgstr "Перейти к функции"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Стандартный"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5709,10 +5707,6 @@ msgstr "ПропиÑные"
msgid "Syntax Highlighter"
msgstr "ПодÑветка СинтакÑиÑа"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Стандартный"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5764,12 +5758,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Удаление пробелов в конце Ñтрок"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Преобразовать отÑтуп в пробелы"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Преобразовать отÑтуп в табулÑцию"
@@ -5787,12 +5779,10 @@ msgid "Remove All Breakpoints"
msgstr "Удалить вÑе точки оÑтановок"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "Перейти к Ñледующей точке оÑтановки"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "Перейти к предыдущей точке оÑтановки"
@@ -5801,17 +5791,14 @@ msgid "Find Previous"
msgstr "Ðайти предыдущее"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "Ðайти в файлах..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Перейти к функции..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Перейти к Ñтроке..."
@@ -5909,7 +5896,7 @@ msgstr "Ð’Ñ‹Ñота"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Отклонение"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6076,7 +6063,6 @@ msgid "Freelook Speed Modifier"
msgstr "Обзор модификатор ÑкороÑти"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
msgstr "Блокировать вращение камеры"
@@ -6309,9 +6295,8 @@ msgstr ""
"Ðе удаетÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ñпрайт иÑпользующий анимационные кадры в Ñетку."
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Invalid geometry, can't replace by mesh."
-msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ð¸Ñ, не удаетÑÑ Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñетки."
+msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ð¸Ñ, не может быть заменена Ñеткой."
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Sprite"
@@ -6414,12 +6399,19 @@ msgid "Set Region Rect"
msgstr "Задать регион"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Задать обработчик"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Режим привÑзки:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Ðет>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
+msgstr "None"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6582,9 +6574,8 @@ msgid "Fix Invalid Tiles"
msgstr "ИÑправить недопуÑтимые плитки"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Центрировать выбранное"
+msgstr "Вырезать выделенное"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6631,39 +6622,37 @@ msgid "Pick Tile"
msgstr "Выбрать тайл"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "Передвинуть выделенное"
+msgstr "Копировать выделенное"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Режим поворота"
+msgstr "Повернуть влево"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Двигать вправо"
+msgstr "Повернуть вправо"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Отразить по горизонтали"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Отразить по вертикали"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "Преобразование"
+msgstr "ОчиÑтить преобразование"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Добавить текÑтуры в набор тайлов"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Удалить текущую текÑтуру из набора тайлов"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6675,22 +6664,40 @@ msgid "Merge from Scene"
msgstr "СлиÑние из Ñцены"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Выберите плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве значка, она также будет "
-"иÑпользоватьÑÑ Ð¿Ñ€Ð¸ неверных привÑзках автотайлов."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Отобразить имена плиток (удерживайте клавишу Alt)"
+msgid "Paste bitmask."
+msgstr "Ð’Ñтавить анимацию"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Удалить точки."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Отображение имен плитки (удерживайте нажатой клавишу Alt)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
-msgstr "Удалить выбранную текÑтуру и вÑе плитки, которые иÑпользуют её?"
+msgstr "Удалить выделенную текÑтуру и ВСЕ ПЛИТКИ, которые ее иÑпользуют?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
@@ -6705,9 +6712,8 @@ msgid "Merge from scene?"
msgstr "СлиÑние из Ñцены?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " файл(Ñ‹) не был(и) добавлен(Ñ‹), поÑкольку уже в ÑпиÑке."
+msgstr "%s файл(Ñ‹) не были добавлены, потому что уже были в ÑпиÑке."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6718,51 +6724,71 @@ msgstr ""
"Ðажмите на другую плитку, чтобы отредактировать ее."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Удалить выбранные файлы?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"ЛКМ: уÑтановить бит.\n"
-"ПКМ: ÑнÑÑ‚ÑŒ бит.\n"
+"Выбрать текущий редактированный вложенный тайл.\n"
"Ðажмите на другой тайл чтобы его отредактировать."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Удалить точку"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Выбрать текущий редактированный вложенный тайл.\n"
+"ЛКМ: уÑтановить бит.\n"
+"ПКМ: ÑнÑÑ‚ÑŒ бит.\n"
"Ðажмите на другой тайл чтобы его отредактировать."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
"Click on another Tile to edit it."
msgstr ""
-"Выберите плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве значка, она также будет "
-"иÑпользоватьÑÑ Ð¿Ñ€Ð¸ неверных привÑзках автотайлов."
+"Выберите вложенную плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве иконки, она также "
+"будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð½ÐµÐ´ÐµÐ¹Ñтвительных автопривÑзок.\n"
+"Ðажмите на другую плитку, чтобы отредактировать ее."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid ""
"Select sub-tile to change its priority.\n"
"Click on another Tile to edit it."
-msgstr "Выберите вложенный тайл, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ приоритета."
+msgstr ""
+"Выберите Ñуб-плитку, чтобы изменить его приоритет.\n"
+"Ðажмите на другую плитку, чтобы отредактировать ее."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Выберите Ñуб-плитку, чтобы изменить его приоритет.\n"
+"Ðажмите на другую плитку, чтобы отредактировать ее."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
+msgstr "Это ÑвойÑтво не может быть изменено."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Ðабор тайлов"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Vertex"
msgstr "Вершины"
@@ -6771,14 +6797,17 @@ msgid "Fragment"
msgstr "Фрагмент"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Light"
-msgstr "Право"
+msgstr "Свет"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Добавить Узел.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
-msgstr "Шейдер"
+msgstr "VisualShader"
#: editor/project_export.cpp
msgid "Runnable"
@@ -6797,14 +6826,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют/повреждены:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "проÑто отпущена"
+msgstr "Релиз"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "ЭкÑпортирование Ð´Ð»Ñ %s"
+msgstr "ЭкÑпорт вÑех"
#: editor/project_export.cpp
msgid "Presets"
@@ -6816,8 +6843,8 @@ msgstr "Добавить..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "ЭкÑпортировать наÑтройки:"
+msgid "Export Path"
+msgstr "Путь ÑкÑпорта:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6880,14 +6907,12 @@ msgid "Export PCK/Zip"
msgstr "ЭкÑпортировать PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Режим ÑкÑпортированиÑ:"
+msgstr "Режим ÑкÑпорта?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "ЭкÑпорт"
+msgstr "ЭкÑпортировать вÑÑ‘"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -6902,23 +6927,21 @@ msgid "The path does not exist."
msgstr "Путь не ÑущеÑтвует."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid '.zip' project file, does not contain a 'project.godot' file."
-msgstr "ПожалуйÑта, выберите папку, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ Ñодержит файл 'project.godot'."
+msgstr ""
+"ÐедейÑтвительный '.zip' файл проекта, не Ñодержит файл 'project.godot'."
#: editor/project_manager.cpp
msgid "Please choose an empty folder."
msgstr "ПожалуйÑта, выберите пуÑтую папку."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Please choose a 'project.godot' or '.zip' file."
-msgstr "ПожалуйÑта, выберите 'project.godot' файл."
+msgstr "ПожалуйÑта, выберите файл 'project.godot' или '.zip'."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Directory already contains a Godot project."
-msgstr "Каталог уже Ñодержит Godot проект."
+msgstr "Каталог уже Ñодержит проект Godot."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -7009,9 +7032,8 @@ msgid "Project Path:"
msgstr "Путь к проекту:"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Project Installation Path:"
-msgstr "Путь к проекту:"
+msgstr "Путь уÑтановки проекта:"
#: editor/project_manager.cpp
msgid "Browse"
@@ -7132,13 +7154,12 @@ msgid "Mouse Button"
msgstr "Кнопка мыши"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid ""
"Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
msgstr ""
-"ÐедопуÑтимое Ð¸Ð¼Ñ Ð´ÐµÐ¹ÑтвиÑ. Оно не может быть пуÑтым или Ñодержать '/', ':', "
-"'=', '\\' или '\"'."
+"Ðеверное Ð¸Ð¼Ñ Ð´ÐµÐ¹ÑтвиÑ. Оно не может быть пуÑтым и не может Ñодержать Ñимволы "
+"\"/\", \":\", \"=\", \"\\\" или \"''\""
#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
@@ -7149,18 +7170,16 @@ msgid "Rename Input Action Event"
msgstr "Переименовать дейÑтвие"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Change Action deadzone"
-msgstr "Изменить Ð¸Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸:"
+msgstr "Изменить ДейÑтвие мертвой зоны"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Добавить дейÑтвие"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "All Devices"
-msgstr "УÑтройÑтво"
+msgstr "Ð’Ñе уÑтройÑтва"
#: editor/project_settings_editor.cpp
msgid "Device"
@@ -7207,24 +7226,20 @@ msgid "Wheel Down Button"
msgstr "КолёÑико вниз"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Wheel Left Button"
-msgstr "КолёÑико вверх"
+msgstr "Кнопка на колеÑике Ñлева"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Wheel Right Button"
-msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши"
+msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° колеÑа"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "X Button 1"
-msgstr "Кнопка 6"
+msgstr "Кнопка X 1"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "X Button 2"
-msgstr "Кнопка 6"
+msgstr "Кнопка X 2"
#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
@@ -7387,9 +7402,8 @@ msgid "Action"
msgstr "ДейÑтвие"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Deadzone"
-msgstr "\"МертваÑ\" зона"
+msgstr "ÐœÐµÑ€Ñ‚Ð²Ð°Ñ Ð·Ð¾Ð½Ð°"
#: editor/project_settings_editor.cpp
msgid "Device:"
@@ -7522,9 +7536,8 @@ msgstr ""
"инÑтрумент:"
#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Batch Rename"
-msgstr "Переименовать"
+msgstr "Пакетное переименование"
#: editor/rename_dialog.cpp
msgid "Prefix"
@@ -7535,52 +7548,45 @@ msgid "Suffix"
msgstr "СуффикÑ"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Advanced options"
-msgstr "Параметры прилипаниÑ"
+msgstr "Дополнительные параметры"
#: editor/rename_dialog.cpp
msgid "Substitute"
msgstr "Заменить"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node name"
-msgstr "Ð˜Ð¼Ñ Ð£Ð·Ð»Ð°:"
+msgstr "Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð°"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node's parent name, if available"
-msgstr "РодительÑкое Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð°, еÑли оно доÑтупно"
+msgstr "Ð˜Ð¼Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого узла, еÑли оно доÑтупно"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node type"
-msgstr "Ðайти тип узла"
+msgstr "Тип узла"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Current scene name"
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена"
+msgstr "Ðазвание текущей Ñцены"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Root node name"
-msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла:"
+msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Sequential integer counter.\n"
"Compare counter options."
msgstr ""
"ПоÑледовательный целочиÑленный Ñчетчик.\n"
-"Сравните параметры Ñчетчика."
+"Сравните параметров Ñчетчика."
#: editor/rename_dialog.cpp
#, fuzzy
msgid "Per Level counter"
-msgstr "Счетчик на уровень"
+msgstr "Счетчик уровенÑ"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -7593,14 +7599,13 @@ msgid "Initial value for the counter"
msgstr "Ðачальное значение Ð´Ð»Ñ Ñчетчика"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Step"
-msgstr "Шаг:"
+msgstr "Шаг"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
-msgstr "КоличеÑтво, на которое увеличиваетÑÑ Ñчетчик Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ узла"
+msgstr ""
+"КоличеÑтво, на которое увеличиваетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñчетчика Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ узла"
#: editor/rename_dialog.cpp
msgid "Padding"
@@ -7613,17 +7618,16 @@ msgid ""
"Missing digits are padded with leading zeros."
msgstr ""
"Минимальное количеÑтво цифр Ð´Ð»Ñ Ñчетчика.\n"
-"ÐедоÑтающие цифры дополнÑÑŽÑ‚ÑÑ Ð²ÐµÐ´ÑƒÑ‰Ð¸Ð¼Ð¸ нулÑми."
+"ÐедоÑтающие цифры заполнÑÑŽÑ‚ÑÑ Ð½ÑƒÐ»Ñми."
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Regular Expressions"
-msgstr "Изменить выражение"
+msgstr "РегулÑрные ВыражениÑ"
#: editor/rename_dialog.cpp
#, fuzzy
msgid "Post-Process"
-msgstr "Скрипт поÑÑ‚-процеÑÑа:"
+msgstr "ПоÑÑ‚-обработка"
#: editor/rename_dialog.cpp
msgid "Keep"
@@ -7655,9 +7659,8 @@ msgid "To Uppercase"
msgstr "ВЕРХÐИЙ РЕГИСТР"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Reset"
-msgstr "СброÑить приближение"
+msgstr "СброÑ"
#: editor/rename_dialog.cpp
msgid "Error"
@@ -7764,6 +7767,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Отключение параметра \"editable_instance\" приведет к тому, что вÑе ÑвойÑтва "
+"узла будут возвращены к значениÑм по умолчанию."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7778,29 +7783,24 @@ msgid "Make Local"
msgstr "Сделать локальным"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Create Root Node:"
-msgstr "Создать узел"
+msgstr "Создать корневой узел:"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "2D Scene"
-msgstr "Сцена"
+msgstr "2D-Ñцена"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "3D Scene"
-msgstr "Сцена"
+msgstr "3D-Ñцена"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "User Interface"
-msgstr "ОчиÑтить наÑледование"
+msgstr "ПользовательÑкий интерфейÑ"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Custom Node"
-msgstr "Вырезать узлы"
+msgstr "ПользовательÑкий узел"
#: editor/scene_tree_dock.cpp
msgid "Can't operate on nodes from a foreign scene!"
@@ -7843,9 +7843,8 @@ msgid "Clear Inheritance"
msgstr "ОчиÑтить наÑледование"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Открыть онлайн документацию Godot"
+msgstr "Открыть документацию"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7862,7 +7861,7 @@ msgstr "Изменить тип"
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Extend Script"
-msgstr "Открыть Ñкрипт"
+msgstr "ÐаÑледовать Ñкрипт"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -8019,16 +8018,15 @@ msgstr "Ð/Д"
#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Open Script/Choose Location"
-msgstr "Открыть редактор Ñкриптов"
+msgstr "Открыть Скрипт/Выбрать МеÑто"
#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Ðе указан путь"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Спрайт пуÑÑ‚!"
+msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8121,7 +8119,7 @@ msgstr "Байты:"
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Stack Trace"
-msgstr "Стек"
+msgstr "ТраÑÑировка Стека"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8350,7 +8348,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "Ðргумент шага равен нулю!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8572,8 +8571,9 @@ msgid "End of inner exception stack trace"
msgstr "Конец траÑÑировки внутреннего Ñтека иÑключений"
#: modules/recast/navigation_mesh_editor_plugin.cpp
+#, fuzzy
msgid "Bake NavMesh"
-msgstr ""
+msgstr "ИÑпечь NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8959,12 +8959,11 @@ msgstr "ИÑкать VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Получить %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Задать "
+msgstr "Задать %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9015,16 +9014,15 @@ msgstr ""
"Ñцен). Будет работать первый Ñозданный, оÑтальные будут проигнорированы."
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
"define its shape."
msgstr ""
-"Этот узел не имеет дочерних форм, поÑтому он не может взаимодейÑтвовать Ñ "
-"проÑтранÑтвом.\n"
-"РаÑÑмотрите возможноÑÑ‚ÑŒ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ CollisionShape2D или CollisionPolygon2D "
-"дочерних узлов, Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ формы."
+"Этот узел не имеет форму, поÑтому не может ÑталкиватьÑÑ Ð¸Ð»Ð¸ "
+"взаимодейÑтвовать Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ объектами.\n"
+"Подумайте о добавлении CollisionShape2D или CollisionPolygon2D как дочерний, "
+"чтобы определить ее форму."
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -9065,6 +9063,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ CPUParticles2D требует иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ CanvasItemMaterial Ñ "
+"включенной функцией \"Particles Animation\"."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9120,6 +9120,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"Ð”Ð»Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ Particles2D требуетÑÑ Ð¸Ñпользование CanvasItemMaterial Ñ "
+"включенной функцией \"Particles Animation\"."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9144,23 +9146,21 @@ msgstr ""
"Node2D."
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr "Эта цепь Bone2D должна заканчиватьÑÑ Ð½Ð° узле Skeleton2D ."
+msgstr "Эта Bone2D цепь должна заканчиватьÑÑ Ð½Ð° узле Skeleton2D."
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
msgstr ""
-"Bone2D работает только Ñ Skeleton2D или другим Bone2D как родительÑкий узел."
+"Bone2D работает только Ñо Skeleton2D или другим Bone2D в качеÑтве "
+"родительÑкого узла."
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid ""
"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
msgstr ""
-"Этой коÑти не хватает правильной позы REST. Перейдите к узлу Skeleton2D и "
-"уÑтановите его."
+"У Ñтой коÑти отÑутÑтвует Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ REST-позициÑ. Перейдите к узлу "
+"Skeleton2D и уÑтановите её."
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -9227,16 +9227,15 @@ msgid "Lighting Meshes: "
msgstr "ОÑвещение полиÑетки: "
#: scene/3d/collision_object.cpp
-#, fuzzy
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape or CollisionPolygon as a child to define "
"its shape."
msgstr ""
-"Этот узел не имеет дочерних форм, поÑтому он не может взаимодейÑтвовать Ñ "
-"проÑтранÑтвом.\n"
-"РаÑÑмотрите возможноÑÑ‚ÑŒ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ CollisionShape или CollisionPolygon "
-"дочерних узлов, чтобы определить его форму."
+"Этот узел не имеет форму, поÑтому не может ÑталкиватьÑÑ Ð¸Ð»Ð¸ "
+"взаимодейÑтвовать Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ объектами.\n"
+"Подумайте о добавлении CollisionShape или CollisionPolygon как дочернего, "
+"чтобы определить ее форму."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -9271,15 +9270,16 @@ msgstr ""
"Ñоздайте shape-реÑÑƒÑ€Ñ Ð´Ð»Ñ Ñтого!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr "Ðичего не видно, потому что полиÑетки не были назначены на отриÑовку."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Ðичто не видно, потому что не назначена Ñетка."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ CPUParticles требует иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ SpatialMaterial Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ð¾Ð¹ "
+"функцией \"Billboard Particles\"."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9308,24 +9308,25 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ð°Ñтиц требует иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ SpatialMaterial Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ð¾Ð¹ функцией "
+"\"Billboard Particles\"."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-"PathFollow2D работает только при уÑтановке его в качеÑтве дочернего узла "
-"Path2D."
+msgstr "PathFollow работает только при еÑли она дочь узла Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr ""
-"PathFollow2D работает только при уÑтановке его в качеÑтве дочернего узла "
-"Path2D."
+msgstr "OrientedPathFollow работает только еÑли она дочь узла Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow требует, чтобы в его родительÑком пути были включены "
+"векторы."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9365,15 +9366,15 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Это тело будет игнорироватьÑÑ, пока вы не уÑтановите Ñетку"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RigidBody (в режиме character или rigid) будут "
-"переопределены движком при запуÑке.\n"
-"Измените размер дочерней формы коллизии."
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° SoftBody будут переопределены физичеÑким движком во Ð²Ñ€ÐµÐ¼Ñ "
+"работы.\n"
+"ВмеÑто Ñтого измените размер его дочерних форм Ñтолкновений(collision "
+"shapes)."
#: scene/3d/sprite_3d.cpp
msgid ""
@@ -9396,44 +9397,41 @@ msgid "On BlendTree node '%s', animation not found: '%s'"
msgstr "Ðа узле BlendTree '%s' Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ найдена: '%s'"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Animation not found: '%s'"
-msgstr "ИнÑтрументы анимации"
+msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ найдена: %s"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Ð’ узле '%s' недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ: '%s'."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "ОШИБКÐ: ÐедопуÑтимое название анимации!"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ: \"%s\"."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Nothing connected to input '%s' of node '%s'."
-msgstr "Отключить '%s' от '%s'"
+msgstr "Ðичего не подключено к входу \"%s\" узла \"%s\"."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "A root AnimationNode for the graph is not set."
msgstr "Ðе задан корневой AnimationNode Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð°."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr "Выберите AnimationPlayer из дерева Ñцены Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¹."
+msgstr "Путь к узлу AnimationPlayer, Ñодержащему анимацию, не задан."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-"Путь уÑтановленный Ð´Ð»Ñ AnimationPlayer не приводит к узлу AnimationPlayer."
+msgstr "Путь, заданный Ð´Ð»Ñ AnimationPlayer, не ведет к узлу AnimationPlayer."
#: scene/animation/animation_tree.cpp
msgid "AnimationPlayer root is not a valid node."
msgstr "Корневой Ñлемент AnimationPlayer недейÑтвительный."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "RAW режим"
@@ -9450,6 +9448,10 @@ msgstr "Внимание!"
msgid "Please Confirm..."
msgstr "Подтверждение..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9462,7 +9464,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "ЕÑли exp_edit равен true min_value должно быть > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9522,15 +9524,9 @@ msgstr "ÐедопуÑтимый размер шрифта."
msgid "Input"
msgstr "Добавить вход"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Ðет>"
-
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Invalid source for shader."
-msgstr "Ðеверный иÑточник!"
+msgstr "ÐедейÑтвительный иÑточник шейдера."
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
@@ -9546,6 +9542,59 @@ msgstr "Ðазначить форму"
msgid "Varyings can only be assigned in vertex function."
msgstr "Переменные могут быть назначены только в функции вершин."
+#~ msgid "Create Poly"
+#~ msgstr "Создан полигон"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ"
+
+#~ msgid "Zoom out"
+#~ msgstr "Уменьшить"
+
+#~ msgid "Zoom in"
+#~ msgstr "Увеличить"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Создан Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Ðет OccluderPolygon2D реÑурÑа у Ñтого узла.\n"
+#~ "Создать и назначить?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Редактировать ÑущеÑтвующий полигон:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "ЛКМ: Передвинуть точку."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+ЛКМ: Разделить Ñегмент."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "ПКМ: Удалить точку."
+
+#~ msgid "New TextFile"
+#~ msgstr "Ðовый текÑтовый файл"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Сохранить тему как"
+
+#~ msgid "<None>"
+#~ msgstr "<Ðет>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Выберите плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве значка, она также будет "
+#~ "иÑпользоватьÑÑ Ð¿Ñ€Ð¸ неверных привÑзках автотайлов."
+
+#~ msgid "Zoom:"
+#~ msgstr "Приближение:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚ \""
@@ -10261,9 +10310,6 @@ msgstr "Переменные могут быть назначены только
#~ msgid "Source Font:"
#~ msgstr "ИÑходный шрифт:"
-#~ msgid "Source Font Size:"
-#~ msgstr "ИÑходный размер шрифта:"
-
#~ msgid "Dest Resource:"
#~ msgstr "РеÑÑƒÑ€Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ:"
@@ -11107,13 +11153,6 @@ msgstr "Переменные могут быть назначены только
#~ msgid "Scale Region Editor"
#~ msgstr "Редактор маÑштабируемой облаÑти текÑтуры"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr ""
-#~ "Ð’ Ñтом узле нет текÑтуры.\n"
-#~ "Выберите текÑтуру, чтобы редактировать облаÑÑ‚ÑŒ."
-
#~ msgid "Inherit Scene"
#~ msgstr "УнаÑледовать Ñцену"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 726eb15d37..b585fc01f5 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -6,15 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-21 19:08+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: Yohan Sandun <Yohan99ysk@gmail.com>\n"
"Language-Team: Sinhala <https://hosted.weblate.org/projects/godot-engine/"
"godot/si/>\n"
"Language: si\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -247,7 +249,6 @@ msgstr "%d සදහ෠ලුහුබදින්නන් à·ƒà·à¶¯à· යත
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -519,15 +520,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -536,7 +541,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -694,8 +699,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -742,8 +747,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1195,8 +1199,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1651,6 +1654,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2047,7 +2056,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2071,7 +2080,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2482,6 +2491,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2498,8 +2513,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3035,7 +3049,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3281,14 +3295,12 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3296,29 +3308,29 @@ msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3363,15 +3375,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3447,7 +3450,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3979,7 +3981,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4127,15 +4129,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4391,7 +4393,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4493,35 +4503,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4889,6 +4873,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4916,6 +4904,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4931,11 +4923,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -4992,6 +4979,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5002,7 +4993,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5042,7 +5039,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5066,11 +5071,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5098,19 +5099,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5248,19 +5249,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5280,6 +5281,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5320,7 +5329,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5349,15 +5358,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5465,6 +5474,10 @@ msgstr ""
msgid "Go to Function"
msgstr "à·à·Šâ€à¶»à·’ත:"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5497,10 +5510,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6189,11 +6198,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6430,11 +6444,11 @@ msgid "Clear transform"
msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6446,13 +6460,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6482,15 +6514,24 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "තà·à¶»à·à¶œà¶­à·Š යතුරු මක෠දමන්න"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Delete polygon."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6508,11 +6549,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6528,6 +6575,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6564,7 +6615,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8007,7 +8058,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8849,7 +8900,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8892,7 +8943,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -8980,6 +9033,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -8996,6 +9053,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9052,10 +9113,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index d2bd63b02a..1b2a393dd8 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -7,15 +7,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-06-18 08:43+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: MineGame 159 <minegame459@gmail.com>\n"
"Language-Team: Slovak <https://hosted.weblate.org/projects/godot-engine/"
"godot/sk/>\n"
"Language: sk\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 3.0.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -254,7 +256,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -526,15 +527,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -543,7 +548,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -704,8 +709,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -752,8 +757,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1210,8 +1214,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1686,6 +1689,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2086,7 +2095,7 @@ msgid "Undo"
msgstr "Späť"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2110,7 +2119,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2526,6 +2535,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2542,8 +2557,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "Popis:"
@@ -2962,7 +2976,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Popis:"
@@ -3090,8 +3104,9 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
-msgstr ""
+#, fuzzy
+msgid "Invalid group name."
+msgstr "Nesprávna veľkosť písma."
#: editor/groups_editor.cpp editor/node_dock.cpp
msgid "Groups"
@@ -3341,45 +3356,47 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Vytvoriť adresár"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Signály:"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "Všetky vybrané"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Všetky vybrané"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
+msgid "Erase points."
msgstr "Všetky vybrané"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3424,17 +3441,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Všetky vybrané"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Všetky vybrané"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3511,7 +3517,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4053,7 +4058,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4205,15 +4210,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4470,7 +4475,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4576,35 +4590,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4974,6 +4962,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5001,6 +4993,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5016,11 +5012,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5081,6 +5072,10 @@ msgstr "Všetky vybrané"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5092,7 +5087,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5135,10 +5136,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Otvorit prieÄinok"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5160,12 +5171,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Vytvoriť adresár"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Všetky vybrané"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5192,19 +5199,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5342,19 +5349,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5377,6 +5384,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5419,8 +5434,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Súbor:"
+msgid "Open..."
+msgstr "Otvoriť"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5448,15 +5463,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5565,6 +5580,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Všetky vybrané"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5597,10 +5616,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6298,11 +6313,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6543,12 +6563,12 @@ msgid "Clear transform"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Všetky vybrané"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6560,13 +6580,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Vložiť"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Všetky vybrané"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6596,16 +6637,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Všetky vybrané"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Všetky vybrané"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Vytvoriť adresár"
@@ -6623,12 +6675,19 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "Súbor:"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6644,6 +6703,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6680,7 +6743,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8150,7 +8213,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "argument \"step\"/krok je nulový!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9016,7 +9080,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9059,7 +9123,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9148,6 +9214,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9164,6 +9234,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9220,10 +9294,6 @@ msgstr "Nesprávna veľkosť písma."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9241,6 +9311,10 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Súbor:"
+
#~ msgid "Class List:"
#~ msgstr "Zoznam tried:"
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 19a658939b..a3a4333552 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -11,16 +11,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-09-10 18:23+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:43+0100\n"
"Last-Translator: Tine Jozelj <tine@tjo.space>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/"
"godot/sl/>\n"
"Language: sl\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -267,7 +269,6 @@ msgstr "Ustvarim %d NOVO sled in vstavim kljuÄe?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -544,15 +545,19 @@ msgstr "Zamenjaj Vse"
msgid "Selection Only"
msgstr "Samo Izbira"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Približaj"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Oddalji"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Ponastavi PoveÄavo/PomanjÅ¡avo"
@@ -561,9 +566,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "Približaj"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -728,8 +732,8 @@ msgid "Recent:"
msgstr "Nedavni:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Iskanje:"
@@ -780,8 +784,7 @@ msgid "Resource"
msgstr "Viri"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pot"
@@ -1242,8 +1245,7 @@ msgid "Node Name:"
msgstr "Ime Gradnika:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ime"
@@ -1725,6 +1727,12 @@ msgstr "Te operacije ne moremo storiti brez osnovnega drevesa."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2162,7 +2170,7 @@ msgid "Undo"
msgstr "Razveljavi"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Ponovi"
@@ -2186,7 +2194,7 @@ msgstr "Nastavitve Projekta"
msgid "Export"
msgstr "Izvozi"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Orodja"
@@ -2622,6 +2630,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2638,8 +2652,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3071,7 +3084,7 @@ msgstr "Podvoji..."
msgid "Move To..."
msgstr "Premakni V..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Hitro Odpri Skripto..."
@@ -3215,7 +3228,7 @@ msgstr "NAPAKA: Animacija s tem imenom že obstaja!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Neveljavno ime."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3472,14 +3485,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Ustvarite Poligon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Uredi Poligon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3487,25 +3500,28 @@ msgid "Insert Point"
msgstr "Ustavi ToÄko"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Uredi Poligon (Odstrani ToÄko)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Odstrani Poligon in ToÄko"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Ustvari nov poligon od zaÄetka"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "IzbriÅ¡i toÄke"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Uredi obstojeÄi poligon:\n"
"LMG: Premakni ToÄko.\n"
@@ -3513,7 +3529,9 @@ msgstr ""
"DMG: ZbriÅ¡i ToÄko."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
msgstr "IzbriÅ¡i toÄke"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3559,17 +3577,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "IzbriÅ¡i toÄke"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "IzbriÅ¡i toÄke"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3647,7 +3654,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Dodaj vozliÅ¡Äe"
@@ -4199,7 +4205,7 @@ msgstr "Vse"
msgid "Plugins"
msgstr "VtiÄniki"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Razvrsti:"
@@ -4359,21 +4365,19 @@ msgid "Paste Pose"
msgstr "Prilepi Pozicijo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Oddalji"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Oddalji"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Približaj"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Izberi NaÄin"
@@ -4637,8 +4641,17 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr ""
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Ustvarite Poligon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Uredi Poligon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Uredi Poligon (Odstrani ToÄko)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4739,35 +4752,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Model je prazen!"
@@ -5135,6 +5122,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5162,6 +5154,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5177,11 +5173,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5238,6 +5229,10 @@ msgstr "Odstrani ToÄko Izven Nadzora"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5249,7 +5244,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5294,10 +5295,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Preoblikovanje"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Odpri 2D Urejevalnik"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5320,12 +5331,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Ustvarite Poligon"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Odstrani toÄko"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5352,20 +5359,20 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Izberite Mapo za Skeniranje"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5514,20 +5521,24 @@ msgid "Error saving file!"
msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Napaka med shranjevanjem."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Napaka pri premikanju:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Napaka nalaganja pisave."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Napaka pri premikanju:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5549,6 +5560,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5590,8 +5609,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Ogled datotek"
+msgid "Open..."
+msgstr "Odpri"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5620,15 +5639,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Uvažanje Prizora..."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5739,6 +5759,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Dodaj Funkcijo"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5771,10 +5795,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6479,12 +6499,17 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "NaÄin Postavljanja:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr ""
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "NiÄ"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6727,12 +6752,12 @@ msgstr "Preoblikovanje"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Dodaj Gradnik(e) iz Drevesa"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Odstrani trenutni vnos"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6744,13 +6769,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Prilepi animacijo"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "IzbriÅ¡i toÄke"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Ustvarite Poligon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6780,16 +6826,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Izbrišem izbrane datoteke?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Izberi trenutno pod-ploÅ¡Äo v urejanju."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "IzbriÅ¡i toÄke"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Izberi trenutno pod-ploÅ¡Äo v urejanju."
@@ -6808,12 +6865,20 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Izberi trenutno pod-ploÅ¡Äo v urejanju."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Ta operacija ni mogoÄa brez scene."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
-msgstr ""
+#, fuzzy
+msgid "TileSet"
+msgstr "Izvozi PloÅ¡Äno Zbirko"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vertex"
@@ -6828,6 +6893,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Dodaj vozliÅ¡Äe"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6866,7 +6936,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Izvozi Projekt"
#: editor/project_export.cpp
@@ -8339,7 +8409,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "stopnja argumenta je niÄ!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9210,7 +9281,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9253,7 +9324,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9347,6 +9420,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Drevo animacije ni veljavno."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Neobdelan naÄin"
@@ -9363,6 +9440,10 @@ msgstr "Opozorilo!"
msgid "Please Confirm..."
msgstr "Prosimo Potrdite..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9423,10 +9504,6 @@ msgstr "Neveljavna velikost pisave."
msgid "Input"
msgstr "Dodaj Vnos"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "NiÄ"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Neveljaven vir za shader."
@@ -9443,6 +9520,28 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Ustvarite Poligon"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Ustvari nov poligon od zaÄetka"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Oddalji"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Približaj"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Ogled datotek"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Približaj"
+
#~ msgid "Class List:"
#~ msgstr "Seznam Razredov:"
@@ -9513,9 +9612,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Animacija Spremeni naÄin ovijanja sledi"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Uredi krivuljo vozliÅ¡Äa"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "Uredi Krivulje izbora"
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index 9dec0b6def..8710bcde0f 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -269,7 +269,6 @@ msgstr "Ðаправите %d нових трака и убаците кључе
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -546,15 +545,19 @@ msgstr "Замени Ñве"
msgid "Selection Only"
msgstr "Само одабрано"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Увеличај"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Умањи"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "РеÑетуј увеличање"
@@ -564,8 +567,8 @@ msgstr ""
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Увеличај"
+msgid "Font Size:"
+msgstr "Поглед иÑпред"
#: editor/code_editor.cpp
msgid "Line:"
@@ -733,8 +736,8 @@ msgid "Recent:"
msgstr "ЧеÑте:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Тражи:"
@@ -785,8 +788,7 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Пут"
@@ -1248,8 +1250,7 @@ msgid "Node Name:"
msgstr "Име чвора:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Име"
@@ -1735,6 +1736,12 @@ msgid "This operation can't be done without a tree root."
msgstr "Ова операција Ñе не може обавити без корена дрвета."
#: editor/editor_node.cpp
+msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
@@ -2174,7 +2181,7 @@ msgid "Undo"
msgstr "Опозови"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Поново уради"
@@ -2198,7 +2205,7 @@ msgstr "ПоÑтавке пројекта"
msgid "Export"
msgstr "Извоз"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Ðлати"
@@ -2639,6 +2646,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2655,8 +2668,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3100,7 +3112,7 @@ msgstr "Дуплирај"
msgid "Move To..."
msgstr "Помери у..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Брзо отварање Ñкриптице..."
@@ -3243,7 +3255,7 @@ msgstr "Грешка: име анимације већ поÑтоји!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ðеважеће име."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3501,14 +3513,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Ðаправи полигон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Измени полигон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3516,25 +3528,28 @@ msgid "Insert Point"
msgstr "Уметни тачку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Уреди полигон (обриши тачку)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Обриши полигон и тачку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Ðаправи нови полигон од почетка"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Обриши тачке"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Измени поÑтојећи полигон:\n"
"Леви таÑтер миша: помери тачку.\n"
@@ -3542,8 +3557,10 @@ msgstr ""
"ДеÑни таÑтер миша: обриши тачку."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Обриши тачке"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "ДеÑни таÑтер миша: обриши тачку."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3589,17 +3606,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Обриши тачке"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "ДеÑни таÑтер миша: обриши тачку."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Помери тачку"
@@ -3677,7 +3683,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4228,7 +4233,7 @@ msgstr "Ñви"
msgid "Plugins"
msgstr "Прикључци"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Сортирање:"
@@ -4382,21 +4387,19 @@ msgid "Paste Pose"
msgstr "Ðалепи позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Умањи"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Умањи"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Увеличај"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Одабери режим"
@@ -4663,8 +4666,17 @@ msgstr ""
"Превуците и иÑпуÑтите + Alt: Промени тип чвора"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Ðаправи Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Ðаправи полигон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Измени полигон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Уреди полигон (обриши тачку)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4766,37 +4778,9 @@ msgid "Item List Editor"
msgstr "Уредник Ñтвари лиÑте"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"OccluderPolygon2D не поÑтоји на овом чвору.\n"
-"Ðаправи и додели један?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Ðаправи оÑенчен полигон"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Ðаправи нови полигон од почетка."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Измени поÑтојећи полигон:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "Леви таÑтер миша: помери тачку."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+леви таÑтер миша: одÑеци дуж."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "ДеÑни таÑтер миша: обриши тачку."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Мрежа је празна!"
@@ -5168,6 +5152,11 @@ msgid "Add Point to Curve"
msgstr "Уметни тачку у криву"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Затвори криву"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Помери тачку у криви"
@@ -5195,6 +5184,11 @@ msgid "Click: Add Point"
msgstr "Клик: уметни тачку"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Подели Ñегмент (у криви)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "ДеÑни клик: обриши тачку"
@@ -5210,11 +5204,6 @@ msgstr "Додај тачку (у празном проÑтору)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Подели Ñегмент (у криви)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Обриши тачку"
@@ -5271,6 +5260,10 @@ msgstr "Обриши тачку контроле излаза"
msgid "Remove In-Control Point"
msgstr "Обриши тачку контроле улаза"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Подели Ñегмент (у криви)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5283,10 +5276,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Покажи коÑти"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Ðаправи UV мапу"
@@ -5328,10 +5327,20 @@ msgid "Transform UV Map"
msgstr "ТранÑформиши UV мапу"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Тип транÑформације"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Уредник UV 2Д полигона"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Уредник UV 2Д полигона"
@@ -5356,11 +5365,7 @@ msgstr "Ðаправи коÑти"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Ðаправи полигон"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Помери тачку"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5388,19 +5393,19 @@ msgid "Scale Polygon"
msgstr "Скалирај полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5554,19 +5559,23 @@ msgid "Error saving file!"
msgstr "Грешка при чувању TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Грешка при чувању теме"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Грешка при чувању"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Грешка при увозу теме"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Грешка при увозу"
#: editor/plugins/script_editor_plugin.cpp
@@ -5589,6 +5598,14 @@ msgid "Import Theme"
msgstr "Увези тему"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Грешка при чувању теме"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Грешка при чувању"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Сачувај тему као..."
@@ -5630,8 +5647,8 @@ msgstr "Датотека"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Погледај датотеке"
+msgid "Open..."
+msgstr "Отвори"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5662,6 +5679,11 @@ msgid "Theme"
msgstr "Сачувај тему"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Увези тему"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Поново учитај тему"
@@ -5670,10 +5692,6 @@ msgid "Save Theme"
msgstr "Сачувај тему"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Сачувај тему као"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Затвори документацију"
@@ -5783,6 +5801,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Иди на функцију..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Само реÑурÑи из датотечног ÑиÑтема Ñе могу убацити."
@@ -5816,10 +5838,6 @@ msgstr "Велика Ñлова"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6539,11 +6557,18 @@ msgid "Set Region Rect"
msgstr "ПоÑтави правоугаони регион"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "ПоÑтави дршку"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Режим лепљења:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Ðиједан>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6795,12 +6820,12 @@ msgid "Clear transform"
msgstr "ТранÑформација"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Обриши тачку криве"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6813,13 +6838,34 @@ msgid "Merge from Scene"
msgstr "Споји од Ñцене"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Ðалепи анимацију"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "ДеÑни таÑтер миша: обриши тачку."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Ðаправи нови полигон од почетка."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6850,16 +6896,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Обриши одабране датотеке?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Сачувај тренутно измењени реÑурÑ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Обриши тачке"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Сачувај тренутно измењени реÑурÑ."
@@ -6878,12 +6935,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Сачувај тренутно измењени реÑурÑ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Ова операција Ñе не може обавити без Ñцене."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6901,6 +6965,10 @@ msgid "Light"
msgstr "деÑно"
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "VisualShader"
msgstr "Шејдер"
@@ -6942,7 +7010,7 @@ msgstr "Додај..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Извези пројекат"
#: editor/project_export.cpp
@@ -8428,7 +8496,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9292,7 +9360,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9335,7 +9403,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9428,6 +9498,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Ðнимационо дрво није важеће."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9444,6 +9518,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9501,11 +9579,6 @@ msgstr "Ðеважећа величина фонта."
msgid "Input"
msgstr "Додај улаз"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Ðиједан>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9523,6 +9596,56 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Ðаправи полигон"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Ðаправи нови полигон од почетка"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Умањи"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Увеличај"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Ðаправи Poly3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "OccluderPolygon2D не поÑтоји на овом чвору.\n"
+#~ "Ðаправи и додели један?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Измени поÑтојећи полигон:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "Леви таÑтер миша: помери тачку."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+леви таÑтер миша: одÑеци дуж."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "ДеÑни таÑтер миша: обриши тачку."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Погледај датотеке"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Сачувај тему као"
+
+#~ msgid "<None>"
+#~ msgstr "<Ðиједан>"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Увеличај"
+
#~ msgid "Class List:"
#~ msgstr "ЛиÑта клаÑа:"
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 864685e72a..55ad9f2ab9 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -4,19 +4,22 @@
# This file is distributed under the same license as the Godot source code.
# Milos Ponjavusic <brane@branegames.com>, 2018.
# BLu <blmasfon@gmail.com>, 2018.
+# Vojislav Bajakic <ch3d4.ns@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-09-21 20:35+0000\n"
-"Last-Translator: BLu <blmasfon@gmail.com>\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
+"Last-Translator: Vojislav Bajakic <ch3d4.ns@gmail.com>\n"
"Language-Team: Serbian (latin) <https://hosted.weblate.org/projects/godot-"
"engine/godot/sr_Latn/>\n"
"Language: sr_Latn\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -255,7 +258,6 @@ msgstr "Napravi %d novih kanala i dodaj kljuÄeve?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -526,15 +528,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -543,7 +549,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -702,8 +708,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -750,8 +756,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1203,8 +1208,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1660,6 +1664,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2056,7 +2066,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2080,7 +2090,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2223,11 +2233,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
-msgstr ""
+msgstr "Zajednica"
#: editor/editor_node.cpp
msgid "About"
-msgstr ""
+msgstr "O nama / O Godou"
#: editor/editor_node.cpp
msgid "Play the project."
@@ -2491,6 +2501,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2507,8 +2523,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2921,7 +2936,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3044,7 +3059,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3290,44 +3305,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Napravi"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Napravi"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Napravi"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3372,16 +3388,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Napravi"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3458,7 +3464,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3993,7 +3998,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4141,15 +4146,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4406,7 +4411,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Napravi"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4508,35 +4522,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4904,6 +4892,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Izmjeni Krivulju ÄŒvora"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4931,6 +4924,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4946,11 +4943,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5007,6 +4999,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5017,7 +5013,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5058,7 +5060,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Napravi"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5082,12 +5093,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon"
-msgstr "Napravi"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5115,19 +5121,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5265,19 +5271,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5297,6 +5303,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5337,7 +5351,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5366,15 +5380,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5482,6 +5496,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5514,10 +5532,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6209,11 +6223,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6452,12 +6471,13 @@ msgid "Clear transform"
msgstr "Animacija Promjeni Transformaciju"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
-msgstr ""
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
+msgstr "Obriši Selekciju"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -6468,13 +6488,32 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Napravi"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6504,15 +6543,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Napravi"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6530,11 +6579,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6550,6 +6605,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6586,7 +6645,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -7103,7 +7162,7 @@ msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "Opšti deo"
#: editor/project_settings_editor.cpp
msgid "Override For..."
@@ -8032,7 +8091,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8876,7 +8935,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8919,7 +8978,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9007,6 +9068,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9023,6 +9088,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9079,10 +9148,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9120,9 +9185,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Animacija Promjeni Režim Omotavanja Kanala"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Izmjeni Krivulju ÄŒvora"
-
#~ msgid "Anim Add Key"
#~ msgstr "Animacija Dodaj KljuÄ"
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 0493e3eec8..94fe05d272 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -12,15 +12,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-08-06 18:43+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:42+0100\n"
"Last-Translator: Daniel K <danielkimblad@hotmail.com>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/"
"godot/sv/>\n"
"Language: sv\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.1.1\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -269,7 +271,6 @@ msgstr "Skapa %d NYA spår och infoga nycklar?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -563,15 +564,19 @@ msgstr "Ersätt Alla"
msgid "Selection Only"
msgstr "Endast Urval"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zooma In"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Zooma Ut"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Återställ Zoom"
@@ -582,8 +587,8 @@ msgstr "Varning"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "Zooma In"
+msgid "Font Size:"
+msgstr "Vy framifrån"
#: editor/code_editor.cpp
msgid "Line:"
@@ -761,8 +766,8 @@ msgid "Recent:"
msgstr "Senaste:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Sök:"
@@ -818,8 +823,7 @@ msgid "Resource"
msgstr "Resurs"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
#, fuzzy
msgid "Path"
msgstr "Sökväg"
@@ -1367,8 +1371,7 @@ msgid "Node Name:"
msgstr "Node Namn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Namn"
@@ -1894,6 +1897,12 @@ msgid "This operation can't be done without a tree root."
msgstr "Åtgärden kan inte göras utan en trädrot."
#: editor/editor_node.cpp
+msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
@@ -2389,7 +2398,7 @@ msgid "Undo"
msgstr "Ã…ngra"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
#, fuzzy
msgid "Redo"
msgstr "Ã…ngra"
@@ -2415,7 +2424,7 @@ msgstr "Projektinställningar"
msgid "Export"
msgstr "Exportera"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Verktyg"
@@ -2849,6 +2858,12 @@ msgstr "Tilldela"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2865,8 +2880,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "Nytt Skript"
@@ -3325,7 +3339,7 @@ msgstr "Duplicera"
msgid "Move To..."
msgstr "Flytta Till..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Nytt Skript"
@@ -3470,7 +3484,7 @@ msgstr "ERROR: Animationsnamn finns redan!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Ogiltigt namn."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3739,14 +3753,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Skapa Prenumeration"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Redigera Polygon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3754,30 +3768,33 @@ msgid "Insert Point"
msgstr "Infoga Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Redigera Polygon (ta bort punkt)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Ta bort Polygon och Punkt"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create a new polygon from scratch"
-msgstr "Skapa ny polygon från grunden"
+msgid "Create points."
+msgstr "Radera punkter"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
msgstr "Radera punkter"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3823,17 +3840,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Radera punkter"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "Radera punkter"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3912,7 +3918,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Lägg Till Node"
@@ -4481,7 +4486,7 @@ msgstr "Alla"
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sortera:"
@@ -4633,21 +4638,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Zooma Ut"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Zooma Ut"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Zooma In"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4910,8 +4913,17 @@ msgstr ""
"Dra & släpp + Alt: Ändra Node-Typ"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr ""
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Skapa Prenumeration"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Redigera Polygon"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Redigera Polygon (ta bort punkt)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -5014,38 +5026,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#, fuzzy
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Ingen OccluderPolygon2D resurs på denna Node.\n"
-"Skapa och tilldela en?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5425,6 +5408,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Redigera Nodkurva"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5452,6 +5440,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5467,11 +5459,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5529,6 +5516,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5540,7 +5531,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5584,7 +5581,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Transformera"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5610,12 +5616,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Skapa Prenumeration"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Flytta Ner"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5642,20 +5644,20 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Välj en mapp att skanna"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5804,21 +5806,24 @@ msgid "Error saving file!"
msgstr "Fel vid sparande av TileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Fel vid sparande."
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "Error saving"
+msgid "Error Saving"
msgstr "Fel vid sparande"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Fel vid sparande av scenen."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Fel vid laddning:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5841,6 +5846,15 @@ msgid "Import Theme"
msgstr "Importera Tema"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Error saving"
+msgstr "Fel vid sparande"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Save Theme As..."
msgstr "Spara Tema Som..."
@@ -5888,8 +5902,8 @@ msgstr "Fil"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Visa Filer"
+msgid "Open..."
+msgstr "Öppen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5921,6 +5935,11 @@ msgstr "Spara Tema"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
+msgid "Import Theme..."
+msgstr "Importera Tema"
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Reload Theme"
msgstr "Ladda om Tema"
@@ -5930,11 +5949,6 @@ msgid "Save Theme"
msgstr "Spara Tema"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
-msgid "Save Theme As"
-msgstr "Spara Tema Som"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr ""
@@ -6046,6 +6060,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Funktion:"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -6082,10 +6100,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
#, fuzzy
@@ -6830,11 +6844,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7086,12 +7105,12 @@ msgid "Clear transform"
msgstr "Transformera"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Flytta nuvarande spår upp."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -7103,13 +7122,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Klistra in Animation"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Radera punkter"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Skapa Prenumeration"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -7139,16 +7179,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Ta bort valda filer?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "Skapa Mapp"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Radera punkter"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "Skapa Mapp"
@@ -7167,12 +7218,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Skapa Mapp"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Åtgärden kan inte göras utan en scen."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -7189,6 +7247,11 @@ msgid "Light"
msgstr "Höger"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Lägg Till Node"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -7227,7 +7290,7 @@ msgstr "Lägg till..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Exportera Projekt"
#: editor/project_export.cpp
@@ -8794,7 +8857,7 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9715,7 +9778,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9762,7 +9825,9 @@ msgstr ""
"PathFollow2D fungerar bara när den är satt som ett barn till en Path2D-Node."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9854,6 +9919,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -9874,6 +9943,10 @@ msgstr "Varning!"
msgid "Please Confirm..."
msgstr "Vänligen Bekräfta..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9934,10 +10007,6 @@ msgstr "Ogiltig teckenstorlek."
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9956,6 +10025,38 @@ msgid "Varyings can only be assigned in vertex function."
msgstr ""
#, fuzzy
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Skapa ny polygon från grunden"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Zooma Ut"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Zooma In"
+
+#, fuzzy
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Ingen OccluderPolygon2D resurs på denna Node.\n"
+#~ "Skapa och tilldela en?"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Visa Filer"
+
+#, fuzzy
+#~ msgid "Save Theme As"
+#~ msgstr "Spara Tema Som"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Zooma In"
+
+#, fuzzy
#~ msgid "Class List:"
#~ msgstr "Klasslista:"
@@ -10065,9 +10166,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "Anim Spåra Ändra Linda om Läge"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Redigera Nodkurva"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "Redigera Urvalsurva"
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index de4e62702b..33c2bed0e0 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -8,15 +8,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:43+0100\n"
"Last-Translator: Senthil Kumar K <logickumar@gmail.com>\n"
"Language-Team: Tamil <https://hosted.weblate.org/projects/godot-engine/godot/"
"ta/>\n"
"Language: ta\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.18\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -255,7 +257,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -524,15 +525,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -541,7 +546,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -700,8 +705,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -748,8 +753,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1201,8 +1205,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1657,6 +1660,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2053,7 +2062,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2077,7 +2086,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2488,6 +2497,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2504,8 +2519,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2919,7 +2933,7 @@ msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•à®³à¯"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr ""
@@ -3042,7 +3056,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3288,14 +3302,12 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+msgid "Edit Polygon"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3303,29 +3315,29 @@ msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3370,15 +3382,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3454,7 +3457,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -3988,7 +3990,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4136,15 +4138,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4400,7 +4402,15 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+msgid "Create Polygon3D"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4502,35 +4512,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4898,6 +4882,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4925,6 +4914,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4940,11 +4933,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5001,6 +4989,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr ""
@@ -5011,7 +5003,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5051,7 +5049,15 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+msgid "Transform Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5075,11 +5081,7 @@ msgid "Bones"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5107,19 +5109,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5257,19 +5259,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5289,6 +5291,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5329,7 +5339,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5358,15 +5368,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5473,6 +5483,10 @@ msgstr ""
msgid "Go to Function"
msgstr ""
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5505,10 +5519,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6197,11 +6207,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6440,11 +6455,11 @@ msgid "Clear transform"
msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6456,13 +6471,31 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create a new polygon."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6492,15 +6525,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6518,11 +6561,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6538,6 +6587,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6574,7 +6627,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8019,7 +8072,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -8863,7 +8916,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8906,7 +8959,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -8994,6 +9049,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9010,6 +9069,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9066,10 +9129,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
@@ -9104,8 +9163,5 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "அசைவூடà¯à®Ÿà¯ பாதை மறை[wrap] விதம௠மாறà¯à®±à¯"
-#~ msgid "Edit Node Curve"
-#~ msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
#~ msgid "Move Add Key"
#~ msgstr "சேர௠மà¯à®•à¯à®•à®¿à®¯à®ªà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 021f57822e..65042866f6 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -9,15 +9,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-03-10 03:46+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:43+0100\n"
"Last-Translator: Poommetee Ketson <poommetee@protonmail.com>\n"
"Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/"
"th/>\n"
"Language: th\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.20-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -272,7 +274,6 @@ msgstr "เพิ่ม %d à¹à¸—ร็à¸à¹ƒà¸«à¸¡à¹ˆà¹à¸¥à¸°à¹€à¸žà¸´à¹ˆà¸¡à¸
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -550,15 +551,19 @@ msgstr "à¹à¸—นที่ทั้งหมด"
msgid "Selection Only"
msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ขยาย"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "ย่อ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "รีเซ็ตซูม"
@@ -569,8 +574,8 @@ msgstr "คำเตือน"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "ซูม (%):"
+msgid "Font Size:"
+msgstr "ขนาดฟอนต์ต้นฉบับ:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -734,8 +739,8 @@ msgid "Recent:"
msgstr "ล่าสุด:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "ค้นหา:"
@@ -786,8 +791,7 @@ msgid "Resource"
msgstr "รีซอร์ส"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡"
@@ -1245,8 +1249,7 @@ msgid "Node Name:"
msgstr "ชื่อโหนด:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ชื่อ"
@@ -1724,6 +1727,12 @@ msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ อาจจะมีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹„ม่สมบูรณ์ (อินสà¹à¸•à¸™à¸‹à¹Œà¸«à¸£à¸·à¸­à¸à¸²à¸£à¸ªà¸·à¸šà¸—อด)"
@@ -2145,7 +2154,7 @@ msgid "Undo"
msgstr "เลิà¸à¸—ำ"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "ทำซ้ำ"
@@ -2169,7 +2178,7 @@ msgstr "ตัวเลือà¸à¹‚ปรเจà¸à¸•à¹Œ"
msgid "Export"
msgstr "ส่งออà¸"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "เครื่องมือ"
@@ -2597,6 +2606,12 @@ msgstr "ระบุ"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2613,8 +2628,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "เลือภViewport"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "สคริปต์ใหม่"
@@ -3040,7 +3054,7 @@ msgstr "ทำซ้ำ..."
msgid "Move To..."
msgstr "ย้ายไป..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "สคริปต์ใหม่"
@@ -3183,7 +3197,7 @@ msgstr "ผิดพลาด: มีชื่อà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¸™à
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "ชื่อผิดพลาด"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3441,14 +3455,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "สร้างรูปหลายเหลี่ยม"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3456,25 +3470,28 @@ msgid "Insert Point"
msgstr "à¹à¸—รà¸à¸ˆà¸¸à¸”"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม (ลบจุด)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "ลบรูปหลายเหลี่ยมà¹à¸¥à¸°à¸ˆà¸¸à¸”"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "สร้างรูปหลายเหลี่ยมใหม่ตั้งà¹à¸•à¹ˆà¸•à¹‰à¸™"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "ลบจุด"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม:\n"
"เมาส์ซ้าย: ย้ายจุด\n"
@@ -3482,8 +3499,10 @@ msgstr ""
"เมาส์ขวา: ลบจุด"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "ลบจุด"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "คลิà¸à¸‚วา: ลบจุด"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3529,17 +3548,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "ลบจุด"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "คลิà¸à¸‚วา: ลบจุด"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "ย้ายจุด"
@@ -3618,7 +3626,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "เพิ่มโหนด"
@@ -4171,7 +4178,7 @@ msgstr "ทั้งหมด"
msgid "Plugins"
msgstr "ปลั๊à¸à¸­à¸´à¸™"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "เรียงตาม:"
@@ -4328,21 +4335,19 @@ msgid "Paste Pose"
msgstr "วางท่าทาง"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "ย่อ"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "รีเซ็ตà¸à¸²à¸£à¸‹à¸¹à¸¡"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "ขยาย"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "โหมดเลือà¸"
@@ -4608,8 +4613,17 @@ msgstr ""
"ลาภ& วาง + Alt: เปลี่ยนประเภทโหนด"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม 3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "สร้างรูปหลายเหลี่ยม"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม (ลบจุด)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4711,37 +4725,9 @@ msgid "Item List Editor"
msgstr "à¹à¸à¹‰à¹„ขรายชื่อไอเทม"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"ไม่มี OccluderPolygon2D ในโหนดนี้\n"
-"สร้างà¹à¸¥à¸°à¸à¸³à¸«à¸™à¸”?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "สร้างรูปหลายเหลี่ยมà¸à¸±à¹‰à¸™à¹à¸ªà¸‡"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "สร้างรูปหลายเหลี่ยมจาà¸à¸„วามว่างเปล่า"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยมเดิม:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "คลิà¸à¸‹à¹‰à¸²à¸¢: ย้ายจุด"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+คลิà¸à¸‹à¹‰à¸²à¸¢: à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "คลิà¸à¸‚วา: ลบจุด"
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh ว่างเปล่า!"
@@ -5111,6 +5097,11 @@ msgid "Add Point to Curve"
msgstr "เพิ่มจุดในเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "ปิดเส้นโค้ง"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "ย้ายจุดในเส้นโค้ง"
@@ -5138,6 +5129,11 @@ msgid "Click: Add Point"
msgstr "คลิà¸: เพิ่มจุด"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™ (ในเส้นโค้ง)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "คลิà¸à¸‚วา: ลบจุด"
@@ -5153,11 +5149,6 @@ msgstr "เพิ่มจุด (ในที่ว่าง)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™ (ในเส้นโค้ง)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "ลบจุด"
@@ -5214,6 +5205,10 @@ msgstr "ลบจุดควบคุมขาออà¸"
msgid "Remove In-Control Point"
msgstr "ลบจุดควบคุมขาเข้า"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™ (ในเส้นโค้ง)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5226,10 +5221,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "à¹à¸ªà¸”งà¸à¸£à¸°à¸”ูà¸"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "สร้าง UV Map"
@@ -5271,10 +5272,20 @@ msgid "Transform UV Map"
msgstr "เคลื่อนย้าย UV Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "ประเภทà¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "à¹à¸à¹‰à¹„ข UV รูปหลายเหลี่ยม 2D"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "à¹à¸à¹‰à¹„ข UV รูปหลายเหลี่ยม 2D"
@@ -5299,11 +5310,7 @@ msgstr "สร้างà¸à¸£à¸°à¸”ูà¸"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "สร้างรูปหลายเหลี่ยม"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "ย้ายจุด"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5331,20 +5338,20 @@ msgid "Scale Polygon"
msgstr "ปรับขนาดรูปหลายเหลี่ยม"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•à¸±à¸§à¹€à¸¥à¸·à¸­à¸à¸à¹ˆà¸­à¸™!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5494,19 +5501,23 @@ msgid "Error saving file!"
msgstr "ผิดพลาดขณะบันทึภTileSet!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "ผิดพลาดขณะบันทึà¸à¸˜à¸µà¸¡"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "ผิดพลาดขณะบันทึà¸"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "ผิดพลาดขณะนำเข้าธีม"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "ผิดพลาดขณะนำเข้า"
#: editor/plugins/script_editor_plugin.cpp
@@ -5529,6 +5540,14 @@ msgid "Import Theme"
msgstr "นำเข้าธีม"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "ผิดพลาดขณะบันทึà¸à¸˜à¸µà¸¡"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "ผิดพลาดขณะบันทึà¸"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "บันทึà¸à¸˜à¸µà¸¡à¹€à¸›à¹‡à¸™"
@@ -5570,8 +5589,8 @@ msgstr "ไฟล์"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "ดูไฟล์"
+msgid "Open..."
+msgstr "เปิด"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5600,6 +5619,11 @@ msgid "Theme"
msgstr "ธีม"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "นำเข้าธีม"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "โหลดธีมใหม่"
@@ -5608,10 +5632,6 @@ msgid "Save Theme"
msgstr "บันทึà¸à¸˜à¸µà¸¡"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "บันทึà¸à¸˜à¸µà¸¡à¹€à¸›à¹‡à¸™"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "ปิดคู่มือ"
@@ -5721,6 +5741,10 @@ msgstr ""
msgid "Go to Function"
msgstr "ไปยังฟังà¸à¹Œà¸Šà¸±à¸™..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "สามารถวางรีซอร์สจาà¸à¸£à¸°à¸šà¸šà¹„ฟล์ได้เท่านั้น"
@@ -5754,10 +5778,6 @@ msgstr "อัà¸à¸©à¸£à¹à¸£à¸à¸žà¸´à¸¡à¸žà¹Œà¹ƒà¸«à¸à¹ˆ"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6472,11 +6492,18 @@ msgid "Set Region Rect"
msgstr "à¸à¸³à¸«à¸™à¸”ขอบเขต Texture"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "ปรับขนาดรูปร่าง"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<ไม่มี>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6724,12 +6751,12 @@ msgstr "เคลื่อนย้าย"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "เพิ่มโหนดจาà¸à¸œà¸±à¸‡"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "ลบรายà¸à¸²à¸£"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6741,13 +6768,34 @@ msgid "Merge from Scene"
msgstr "รวมจาà¸à¸‰à¸²à¸"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
-msgstr "เลือà¸à¸£à¸¹à¸›à¸ à¸²à¸žà¸¢à¹ˆà¸­à¸¢à¹€à¸žà¸·à¹ˆà¸­à¸—ำเป็นไอคอน ภาพนี้จะใช้à¹à¸ªà¸”งเมื่อà¸à¸²à¸£"
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "วางà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "คลิà¸à¸‚วา: ลบจุด"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "สร้างรูปหลายเหลี่ยมจาà¸à¸„วามว่างเปล่า"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6778,13 +6826,8 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"คลิà¸à¸‹à¹‰à¸²à¸¢: à¸à¸³à¸«à¸™à¸”ค่าบิต เปิด\n"
-"คลิà¸à¸‚วา: à¸à¸³à¸«à¸™à¸”ค่าบิต ปิด"
+msgid "Delete selected Rect."
+msgstr "ลบไฟล์ที่เลือ�"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6795,6 +6838,21 @@ msgstr "เลือà¸à¹„ทล์ย่อยที่à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸±
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Delete polygon."
+msgstr "ลบจุด"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"คลิà¸à¸‹à¹‰à¸²à¸¢: à¸à¸³à¸«à¸™à¸”ค่าบิต เปิด\n"
+"คลิà¸à¸‚วา: à¸à¸³à¸«à¸™à¸”ค่าบิต ปิด"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6810,11 +6868,19 @@ msgstr "เลือà¸à¹„ทล์ย่อยเพื่อจัดลำด
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "เลือà¸à¹„ทล์ย่อยเพื่อจัดลำดับความสำคัà¸"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Tile Set"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6834,6 +6900,11 @@ msgstr "ขวา"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "เพิ่มโหนด"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Shader"
@@ -6873,7 +6944,7 @@ msgstr "เพิ่ม..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "ส่งออà¸à¹‚ปรเจà¸à¸•à¹Œ"
#: editor/project_export.cpp
@@ -8384,7 +8455,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "ตัวà¹à¸›à¸£ step เป็นศูนย์!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9258,7 +9330,7 @@ msgstr "ต้องมีรูปทรงเพื่อให้ CollisionSh
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr "ไม่มีà¸à¸²à¸£à¹à¸ªà¸”งผลเนื่องจาà¸à¹„ม่ได้à¸à¸³à¸«à¸™à¸” mesh ใน draw pass"
#: scene/3d/cpu_particles.cpp
@@ -9305,7 +9377,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr "PathFollow2D จะทำงานได้ต้องเป็นโหนดลูà¸à¸‚องโหนด Path2D"
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9403,6 +9477,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "ผังà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡"
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "โหมด Raw"
@@ -9419,6 +9497,10 @@ msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•à¸·à¸­à¸™!"
msgid "Please Confirm..."
msgstr "à¸à¸£à¸¸à¸“ายืนยัน..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9486,11 +9568,6 @@ msgstr "ขนาดฟอนต์ผิดพลาด"
msgid "Input"
msgstr "เพิ่มอินพุต"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<ไม่มี>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9508,6 +9585,61 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "สร้างรูปหลายเหลี่ยม"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "สร้างรูปหลายเหลี่ยมใหม่ตั้งà¹à¸•à¹ˆà¸•à¹‰à¸™"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "ย่อ"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "ขยาย"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม 3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "ไม่มี OccluderPolygon2D ในโหนดนี้\n"
+#~ "สร้างà¹à¸¥à¸°à¸à¸³à¸«à¸™à¸”?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยมเดิม:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "คลิà¸à¸‹à¹‰à¸²à¸¢: ย้ายจุด"
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+คลิà¸à¸‹à¹‰à¸²à¸¢: à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™"
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "คลิà¸à¸‚วา: ลบจุด"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "ดูไฟล์"
+
+#~ msgid "Save Theme As"
+#~ msgstr "บันทึà¸à¸˜à¸µà¸¡à¹€à¸›à¹‡à¸™"
+
+#~ msgid "<None>"
+#~ msgstr "<ไม่มี>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr "เลือà¸à¸£à¸¹à¸›à¸ à¸²à¸žà¸¢à¹ˆà¸­à¸¢à¹€à¸žà¸·à¹ˆà¸­à¸—ำเป็นไอคอน ภาพนี้จะใช้à¹à¸ªà¸”งเมื่อà¸à¸²à¸£"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "ซูม (%):"
+
#~ msgid "Class List:"
#~ msgstr "รายชื่อคลาส:"
@@ -10210,9 +10342,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "ฟอนต์ต้นฉบับ:"
-#~ msgid "Source Font Size:"
-#~ msgstr "ขนาดฟอนต์ต้นฉบับ:"
-
#~ msgid "Dest Resource:"
#~ msgstr "นำเข้ามาเป็นรีซอร์ส:"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 64c03e3f0b..7a39c66bdd 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -22,15 +22,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-28 16:23+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:43+0100\n"
"Last-Translator: Oğuzhan Özdemir <ozdemiroguzhan0@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -285,7 +287,6 @@ msgstr "%d YENÄ° izler oluÅŸtur ve anahtarlar gir?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -563,15 +564,19 @@ msgstr "Tümünü Değiştir"
msgid "Selection Only"
msgstr "Yalnızca Seçim"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Yaklaştır"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Uzaklaştır"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Yaklaşmayı Sıfırla"
@@ -582,8 +587,8 @@ msgstr "Uyarılar"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Zoom:"
-msgstr "YaklaÅŸ (%):"
+msgid "Font Size:"
+msgstr "Kaynak Yazı Türü Boyutu:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -749,8 +754,8 @@ msgid "Recent:"
msgstr "Yakın zamanda:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Ara:"
@@ -801,8 +806,7 @@ msgid "Resource"
msgstr "Kaynak"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "Yol"
@@ -1261,8 +1265,7 @@ msgid "Node Name:"
msgstr "Düğüm adı:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ad"
@@ -1745,6 +1748,12 @@ msgstr "Bu işlem bir kök sahne olmadan yapılamaz."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2184,7 +2193,7 @@ msgid "Undo"
msgstr "Geri"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Geri"
@@ -2208,7 +2217,7 @@ msgstr "Proje Ayarları"
msgid "Export"
msgstr "Dışa Aktar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Araçlar"
@@ -2648,6 +2657,12 @@ msgstr "Ata"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2664,8 +2679,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr "Bir Görüntükapısı Seçin"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Yeni Betik"
@@ -3097,7 +3111,7 @@ msgstr "Çoğalt..."
msgid "Move To..."
msgstr "Şuraya Taşı..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Yeni Betik"
@@ -3240,7 +3254,7 @@ msgstr "HATA: Bu animasyon adı zaten var!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Geçersiz ad."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3500,14 +3514,14 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
msgstr "Çoklu Oluşturun"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Çokluyu Düzenleyin"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3515,25 +3529,28 @@ msgid "Insert Point"
msgstr "Nokta YerleÅŸtir"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Çokluyu Düzenleyin (Noktayı Silin)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Çokluyu ve Noktayı Kaldır"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Sıfırdan yeni bir çokgen oluşturun"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Noktaları sil"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Varolan çokgeni düzenle:\n"
"FareSolTık: Noktayı Taşı.\n"
@@ -3541,8 +3558,10 @@ msgstr ""
"FareSağTık: Noktayı Sil."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Noktaları sil"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#, fuzzy
+msgid "Erase points."
+msgstr "RMB: Noktayı Sil."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3588,17 +3607,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
-msgid "Create points."
-msgstr "Noktaları sil"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "RMB: Noktayı Sil."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Point"
msgstr "Noktayı Taşı"
@@ -3677,7 +3685,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "Düğüm Ekle"
@@ -4230,7 +4237,7 @@ msgstr "Hepsi"
msgid "Plugins"
msgstr "Eklentiler"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Sırala:"
@@ -4391,21 +4398,19 @@ msgid "Paste Pose"
msgstr "Duruşu Yapıştır"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Uzaklaştır"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Yakınlaşmayı Sıfırla"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Yaklaştır"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Kip Seç"
@@ -4671,8 +4676,17 @@ msgstr ""
"Sürükle & bırak + Alt: Düğüm türünü değiştir"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Çoklu3B Oluştur"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Çoklu Oluşturun"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Çokluyu Düzenleyin"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Çokluyu Düzenleyin (Noktayı Silin)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4774,37 +4788,9 @@ msgid "Item List Editor"
msgstr "Öğe Dizelgesi Düzenleyicisi"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Bu düğümde OccluderPolygon2D kaynağı yok.\n"
-"OluÅŸtur ve bir tane ata?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Engelleyici Çokgeni Oluştur"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Sıfırdan yeni bir çokgen oluşturun."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Var olan çokgeni düzenleyin:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "LMB: Taşıma Noktası."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + LMB: Parçayı Böl."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "RMB: Noktayı Sil."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Örüntü boş!"
@@ -5174,6 +5160,11 @@ msgid "Add Point to Curve"
msgstr "Noktayı Eğriye Ekle"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "EÄŸriyi Kapat"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "Noktayı Eğriye Taşı"
@@ -5201,6 +5192,11 @@ msgid "Click: Add Point"
msgstr "Tıkla: Nokta Ekle"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Parçayı Ayır (eğriye göre)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Sağ tıkla: Nokta Sil"
@@ -5216,11 +5212,6 @@ msgstr "Nokta Ekle (boÅŸlukta)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Parçayı Ayır (eğriye göre)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Noktayı Sil"
@@ -5277,6 +5268,10 @@ msgstr "Çıkış-Kontrol Noktası Kaldır"
msgid "Remove In-Control Point"
msgstr "Giriş-Kontrol Noktasını Kaldır"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Parçayı Ayır (eğriye göre)"
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5289,10 +5284,16 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Sync bones"
+msgid "Sync Bones"
msgstr "Kemikleri Göster"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "UV Haritası Oluştur"
@@ -5334,10 +5335,20 @@ msgid "Transform UV Map"
msgstr "UV Haritasını Dönüştür"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Dönüştürme Türü"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Çokgen 2B UV Düzenleyicisi"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Çokgen 2B UV Düzenleyicisi"
@@ -5362,11 +5373,7 @@ msgstr "Kemik Yap"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Çoklu Oluşturun"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+msgid "Move Points"
msgstr "Noktayı Taşı"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5394,20 +5401,20 @@ msgid "Scale Polygon"
msgstr "Çokgeni Ölçekle"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Önce bir ayar öğesi seçin!"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5557,19 +5564,23 @@ msgid "Error saving file!"
msgstr "TileSet kaydedilirken hata!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Tema kaydedilirken hata"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Kaydedilirken hata"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Tema içe aktarılırken hata"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "İçe aktarılırken hata"
#: editor/plugins/script_editor_plugin.cpp
@@ -5592,6 +5603,14 @@ msgid "Import Theme"
msgstr "Kalıbı İçe Aktar"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Tema kaydedilirken hata"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Kaydedilirken hata"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Temayı Farklı Kaydet..."
@@ -5633,8 +5652,8 @@ msgstr "Dosya"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "Dosyaları Görüntüle"
+msgid "Open..."
+msgstr "Aç"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5663,6 +5682,11 @@ msgid "Theme"
msgstr "Kalıp"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Kalıbı İçe Aktar"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Kalıbı Yeniden Yükle"
@@ -5671,10 +5695,6 @@ msgid "Save Theme"
msgstr "Kalıbı Kaydet"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Temayı Farklı Kaydet"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Belgeleri Kapat"
@@ -5784,6 +5804,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Ä°ÅŸleve Git..."
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr "Sadece dosya sisteminden kaynaklar bırakılabilir."
@@ -5817,10 +5841,6 @@ msgstr "Büyük harfe çevirme"
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6535,11 +6555,18 @@ msgid "Set Region Rect"
msgstr "Dikdörtgen Bölgesini Ayarla"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Tutamacı Ayarla"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Yapışma Kipi:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
msgstr "<Yok>"
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6784,12 +6811,12 @@ msgstr "Dönüşüm"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "Ağaçtan Düğüm(ler) Ekle"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "Mevcut giriyi kaldır"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6801,15 +6828,34 @@ msgid "Merge from Scene"
msgstr "Sahneden BirleÅŸtir"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Simge olarak kullanmak işin alt-karo seç, bu aynı zamanda geçersiz oto-karo "
-"bağlantılarında kullanılacaktır."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Animasyonu Yapıştır"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "RMB: Noktayı Sil."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Sıfırdan yeni bir çokgen oluşturun."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6840,13 +6886,8 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"LMB: bit'i aç.\n"
-"RMB: bit'i kapat."
+msgid "Delete selected Rect."
+msgstr "Seçili dosyalar silinsin mi?"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -6857,6 +6898,21 @@ msgstr "Şuanki düzenlenmiş alt-döşemeyi seç."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Delete polygon."
+msgstr "Noktaları sil"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"LMB: bit'i aç.\n"
+"RMB: bit'i kapat."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6874,11 +6930,19 @@ msgstr "Önceliğini değiştirmek için alt-karo seçin."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "Önceliğini değiştirmek için alt-karo seçin."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "Bu işlem bir sahne olmadan yapılamaz."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Karo Takımı"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6897,6 +6961,11 @@ msgstr "SaÄŸ"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
+msgid "Add Node..."
+msgstr "Düğüm Ekle"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "VisualShader"
msgstr "Gölgelendirici"
@@ -6936,7 +7005,7 @@ msgstr "Ekle..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "Ön Ayarları Dışa Aktar:"
#: editor/project_export.cpp
@@ -8460,7 +8529,8 @@ msgid "GDNative"
msgstr "GDYerel"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "adım değiştirgeni sıfır!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9375,7 +9445,7 @@ msgstr ""
#: scene/3d/cpu_particles.cpp
#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
"Hiçbirşey görünebilir değil çünkü örüntüler çizim geçişlerine atanmış değil."
@@ -9428,7 +9498,9 @@ msgstr ""
"PathFollow2D yalnızca Path2D düğümünün çocuğu olarak ayarlanınca çalışır."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9539,6 +9611,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Animasyon ağacı geçersizdir."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Ham Kip"
@@ -9555,6 +9631,10 @@ msgstr "Uyarı!"
msgid "Please Confirm..."
msgstr "Lütfen Doğrulayın..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9624,11 +9704,6 @@ msgstr "Geçersiz yazıtipi boyutu."
msgid "Input"
msgstr "GiriÅŸ Ekle"
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Yok>"
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9646,6 +9721,63 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#~ msgid "Create Poly"
+#~ msgstr "Çoklu Oluşturun"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Sıfırdan yeni bir çokgen oluşturun"
+
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Uzaklaştır"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Yaklaştır"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Çoklu3B Oluştur"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Bu düğümde OccluderPolygon2D kaynağı yok.\n"
+#~ "OluÅŸtur ve bir tane ata?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Var olan çokgeni düzenleyin:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "LMB: Taşıma Noktası."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl + LMB: Parçayı Böl."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "RMB: Noktayı Sil."
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "Dosyaları Görüntüle"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Temayı Farklı Kaydet"
+
+#~ msgid "<None>"
+#~ msgstr "<Yok>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Simge olarak kullanmak işin alt-karo seç, bu aynı zamanda geçersiz oto-"
+#~ "karo bağlantılarında kullanılacaktır."
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "YaklaÅŸ (%):"
+
#~ msgid "Class List:"
#~ msgstr "Sınıf Listesi:"
@@ -10346,9 +10478,6 @@ msgstr ""
#~ msgid "Source Font:"
#~ msgstr "Yazı Türü Kaynağı:"
-#~ msgid "Source Font Size:"
-#~ msgstr "Kaynak Yazı Türü Boyutu:"
-
#~ msgid "Dest Resource:"
#~ msgstr "Varış Kaynağı:"
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 6d61acce23..8171b7e68e 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -9,19 +9,22 @@
# МакÑим Якимчук <xpinovo@gmail.com>, 2018.
# ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>, 2017-2018.
# ОлекÑандр Пилипчук <pilipchukap@rambler.ru>, 2018.
+# Kirill Omelchenko <kirill.omelchenko@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
-"PO-Revision-Date: 2018-08-24 19:45+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
"Language: uk\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -42,8 +45,7 @@ msgstr "Ðекоректні вхідні дані %i (не передано) у
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
msgstr ""
-"не можна викориÑтовувати self, оÑкільки екземплÑÑ€ може бути порожнім (не "
-"передано)"
+"не можна викориÑтовувати self, оÑкільки екземплÑÑ€ Ñ” порожнім (не передано)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -257,7 +259,6 @@ msgstr "Створити %d нові доріжки Ñ– вÑтавити ключ
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -407,14 +408,12 @@ msgid "Delete Selection"
msgstr "Вилучити позначене"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Перейти до наÑтупного кроку"
+msgstr "До наÑтупного кроку"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "ПовернутиÑÑ Ð´Ð¾ попереднього кроку"
+msgstr "До попереднього кроку"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -536,15 +535,19 @@ msgstr "Замінити вÑÑ–"
msgid "Selection Only"
msgstr "Тільки виділити"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Збільшувати"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "ЗменшеннÑ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Скинути маÑштаб"
@@ -553,8 +556,8 @@ msgid "Warnings:"
msgstr "ПопередженнÑ:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "МаÑштаб:"
+msgid "Font Size:"
+msgstr "Розмір шрифту:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -667,9 +670,8 @@ msgid "Edit Connection: "
msgstr "Редагувати з’єднаннÑ: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "Ви Ñправді хочете вилучити уÑÑ– з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· цього Ñигналу?"
+msgstr "Ви Ñправді хочете вилучити уÑÑ– з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñигналу «%s»?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -714,8 +716,8 @@ msgid "Recent:"
msgstr "Ðещодавні:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Пошук:"
@@ -766,8 +768,7 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "ШлÑÑ…"
@@ -824,9 +825,8 @@ msgid "Error loading:"
msgstr "Помилка завантаженнÑ:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ у зв'Ñзку з відÑутніми залежноÑÑ‚Ñми Ñцени:"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ через неÑтачу залежноÑтей:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1231,8 +1231,7 @@ msgid "Node Name:"
msgstr "Ім'Ñ Ð’ÑƒÐ·Ð»Ð°:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ім'Ñ"
@@ -1310,24 +1309,21 @@ msgid "File Exists, Overwrite?"
msgstr "Файл Ñ–Ñнує, перезапиÑати його?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "Обрати цю теку"
+msgstr "Вибрати цю теку"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "Копіювати шлÑÑ…"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "Відкрити в менеджері файлів"
+msgstr "Відкрити у менеджері файлів"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "Показати в файловому менеджері"
+msgstr "Показати у менеджері файлів"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1470,19 +1466,16 @@ msgid "Methods"
msgstr "Методи"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "Методи"
+msgstr "Методи:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "ВлаÑтивоÑÑ‚Ñ–"
+msgstr "ВлаÑтивоÑÑ‚Ñ– теми"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "ВлаÑтивоÑÑ‚Ñ–:"
+msgstr "ВлаÑтивоÑÑ‚Ñ– теми:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1509,18 +1502,16 @@ msgid "Constants:"
msgstr "КонÑтанти:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "ОпиÑ"
+msgstr "ÐžÐ¿Ð¸Ñ ÐºÐ»Ð°Ñу"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "ОпиÑ:"
+msgstr "ÐžÐ¿Ð¸Ñ ÐºÐ»Ð°Ñу:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
-msgstr "Підручники у інтернеті:"
+msgstr "Підручники в інтернеті:"
#: editor/editor_help.cpp
msgid ""
@@ -1533,14 +1524,12 @@ msgstr ""
"щодо їхнього ÑтвореннÑ[/url][/color]."
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "ÐžÐ¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑтей:"
+msgstr "ОпиÑи влаÑтивоÑтей"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "ÐžÐ¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑтей:"
+msgstr "ОпиÑи влаÑтивоÑтей:"
#: editor/editor_help.cpp
msgid ""
@@ -1551,14 +1540,12 @@ msgstr ""
"[url=$url]Ñтворіть його[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "ÐžÐ¿Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ñ–Ð²:"
+msgstr "ОпиÑи методів"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "ÐžÐ¿Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ñ–Ð²:"
+msgstr "ОпиÑи методів:"
#: editor/editor_help.cpp
msgid ""
@@ -1574,49 +1561,40 @@ msgid "Search Help"
msgstr "Пошук довідки"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "Ðормальний переглÑд"
+msgstr "Показати уÑе"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "КлаÑи"
+msgstr "Лише клаÑи"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "Методи"
+msgstr "Лише методи"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "Сигнали"
+msgstr "Лише Ñигнали"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "КонÑтанти"
+msgstr "Лише Ñталі"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "ВлаÑтивоÑÑ‚Ñ–"
+msgstr "Лише влаÑтивоÑÑ‚Ñ–"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "ВлаÑтивоÑÑ‚Ñ–"
+msgstr "Лише влаÑтивоÑÑ‚Ñ– теми"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "Члени"
+msgstr "Тип члена"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "КлаÑ:"
+msgstr "КлаÑ"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1715,6 +1693,14 @@ msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ може бути виконана без кÐ
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Цю Ñцену неможливо зберегти через циклічне Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñра.\n"
+"Будь лаÑка, приберіть це включеннÑ, потім повторіть Ñпробу збереженнÑ."
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -1723,7 +1709,7 @@ msgstr ""
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "Ðеможливо перезапиÑати Ñцену, Ñка Ñ” ще відкритою!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1982,13 +1968,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Ðеможливо завантажити Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñкрипт зі шлÑху: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Ðеможливо завантажити Ñкрипт Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð· шлÑху: '%s' Скрипт не в режимі "
-"інÑтрументу."
+"Ðеможливо завантажити Ñкрипт Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð· шлÑху «%s». ЗдаєтьÑÑ, у коді Ñ” "
+"помилка, будь лаÑка, перевірте ÑинтакÑиÑ."
#: editor/editor_node.cpp
msgid ""
@@ -2043,9 +2028,8 @@ msgstr "Типовий"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "Показати в файловій ÑиÑтемі"
+msgstr "Показати у файловій ÑиÑтемі"
#: editor/editor_node.cpp
msgid "Play This Scene"
@@ -2128,7 +2112,6 @@ msgid "Save Scene"
msgstr "Зберегти Ñцену"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "Зберегти вÑÑ– Ñцени"
@@ -2158,7 +2141,7 @@ msgid "Undo"
msgstr "СкаÑувати"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "Повернути"
@@ -2182,7 +2165,7 @@ msgstr "Параметри проекту"
msgid "Export"
msgstr "ЕкÑпортуваннÑ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ІнÑтрументи"
@@ -2612,9 +2595,18 @@ msgstr "Призначити…"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"Ðеможливо Ñтворити ViewportTexture на оÑнові реÑурÑів, Ñкі збережено Ñк "
+"файл.\n"
+"РеÑÑƒÑ€Ñ Ð¼Ð°Ñ” належати до Ñцени."
#: editor/editor_properties.cpp
msgid ""
@@ -2623,13 +2615,16 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"Ðеможливо Ñтворити ViewportTexture на оÑнові цього реÑурÑу, оÑкільки його не "
+"вÑтановлено Ñк локальний щодо Ñцени.\n"
+"Будь лаÑка, увімкніть влаÑтивіÑÑ‚ÑŒ «Локальний щодо Ñцени» Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾ (Ñ– уÑÑ–Ñ… "
+"реÑурÑів, що його міÑÑ‚ÑÑ‚ÑŒ, аж до вузла)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "Виберіть панель переглÑду"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "Ðовий Ñкрипт"
@@ -2939,9 +2934,8 @@ msgstr ""
"тип кешу!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Вибране:"
+msgstr "Вибране"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -3027,14 +3021,12 @@ msgid "Instance"
msgstr "ЕкземплÑÑ€"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "Вибране:"
+msgstr "Додати до вибраного"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "Вилучити з групи"
+msgstr "Вилучити з вибраного"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3056,7 +3048,7 @@ msgstr "Дублювати..."
msgid "Move To..."
msgstr "ПереміÑтити до..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "Створити Ñкрипт…"
@@ -3065,12 +3057,10 @@ msgid "New Resource..."
msgstr "Створити реÑурÑ…"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
msgstr "Розгорнути вÑе"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
msgstr "Згорнути вÑе"
@@ -3094,9 +3084,8 @@ msgid "Re-Scan Filesystem"
msgstr "ПереÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ñ— ÑиÑтеми"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "Режим ПеремиканнÑ"
+msgstr "Перемкнути режим поділу"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3128,27 +3117,23 @@ msgstr "ПерезапиÑати"
#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
-msgstr "Створити Ñценарій"
+msgstr "Створити Ñкрипт"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "Знайти у файлах"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Знайти: "
+msgstr "Знайти:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Тека: "
+msgstr "Тека:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Фільтр: "
+msgstr "Фільтри:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3188,7 +3173,8 @@ msgid "Group name already exists."
msgstr "Група із такою назвою вже Ñ–Ñнує."
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "некоректна назва групи."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3325,12 +3311,10 @@ msgid "Failed to load resource."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "Розгорнути вÑÑ– влаÑтивоÑÑ‚Ñ–"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
msgstr "Згорнути вÑÑ– влаÑтивоÑÑ‚Ñ–"
@@ -3436,14 +3420,13 @@ msgid "Activate now?"
msgstr "ЗадіÑти зараз?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "Створити полігон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "Редагувати полігон"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3451,25 +3434,27 @@ msgid "Insert Point"
msgstr "Ð’Ñтавити точку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "Редагувати полігон (вилучити точку)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "Вилучити полігон та точку"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ полігону з нулÑ"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "Створити точки."
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ñнуючого полігону:\n"
"ЛКМ: переміÑтити точку.\n"
@@ -3477,8 +3462,9 @@ msgstr ""
"ПКМ: видалити точку."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "Видалити точки"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "Витерти точки."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3529,15 +3515,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "Створити точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "Витерти точки."
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "Точка"
@@ -3620,7 +3597,6 @@ msgstr ""
"неможливо отримати назви доріжок."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "Додати вузол…"
@@ -4158,7 +4134,7 @@ msgstr "Ð’Ñе"
msgid "Plugins"
msgstr "Плаґіни"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "Сортувати:"
@@ -4289,9 +4265,8 @@ msgid "Resize CanvasItem"
msgstr "Змінити розмір CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "Обертати CanvasItem"
+msgstr "МаÑштабувати CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4314,18 +4289,19 @@ msgid "Paste Pose"
msgstr "Ð’Ñтавити позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "Зменшити"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "Відновити початковий маÑштаб"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "Збільшити"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "Режим виділеннÑ"
@@ -4356,9 +4332,8 @@ msgid "Rotate Mode"
msgstr "Режим повороту"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "Режим маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ (R)"
+msgstr "Режим маÑштабуваннÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4457,9 +4432,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "Відновлює можливіÑÑ‚ÑŒ вибору нащадків об'єкта."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "КаркаÑ"
+msgstr "Параметри каркаÑа"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4513,7 +4487,7 @@ msgstr "Показати панель переглÑду"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Показати піктограми Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° блокуваннÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4587,8 +4561,17 @@ msgstr ""
"ПеретÑг + Alt : Змінити тип вузла"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "Створити полігон3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Створити полігон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Редагувати полігон"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Редагувати полігон (вилучити точку)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4689,37 +4672,9 @@ msgid "Item List Editor"
msgstr "Редактор ÑпиÑку елементів"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"Цей вузол не має реÑурÑу OccluderPolygon2D.\n"
-"Створити і призначити?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Створено затінювальний полігон"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Створити новий полігон з нулÑ."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ñнуючого полігону:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "ЛКМ: ПереміÑтити точку."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "CTRL+ЛКМ: Розділити Ñегмент."
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "ПКМ: Стерти точку."
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Сітка порожнÑ!"
@@ -4955,9 +4910,8 @@ msgid "Create Navigation Polygon"
msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ полігону"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
-msgstr "Створити облаÑÑ‚ÑŒ видимоÑÑ‚Ñ–"
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð°ÑÑ‚Ñ– видимоÑÑ‚Ñ–"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -5089,6 +5043,11 @@ msgid "Add Point to Curve"
msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ до кривої"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Закрити криву"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "ПереміÑтити точку на криву"
@@ -5116,6 +5075,11 @@ msgid "Click: Add Point"
msgstr "Клацніть: Додати точку"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "Розділити Ñегмент (кривої)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Клацніть правою кнопкою миші: видалити точку"
@@ -5131,11 +5095,6 @@ msgstr "Додати точку (в порожньому проÑторі)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "Розділити Ñегмент (кривої)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Вилучити точку"
@@ -5192,6 +5151,10 @@ msgstr "Вилучити вихідну керувальну точку"
msgid "Remove In-Control Point"
msgstr "Вилучити вхідну керувальну точку"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "Розділити Ñегмент (кривої)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "ПереÑунути з'єднаннÑ"
@@ -5202,10 +5165,17 @@ msgid ""
msgstr "ВлаÑтивіÑÑ‚ÑŒ skeleton Polygon2D не вказує на вузол Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "Синхронізувати кіÑтки"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "Створити UV-карту"
@@ -5242,10 +5212,21 @@ msgid "Transform UV Map"
msgstr "Перетворити UV-карту"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Тип перетвореннÑ"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "Малювати ваги кіÑток"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "Редактор плоÑких полігонів UV"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "Редактор плоÑких полігонів UV"
@@ -5266,11 +5247,8 @@ msgid "Bones"
msgstr "КіÑтки"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "Створити полігон"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "ПереміÑтити точку"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5298,19 +5276,23 @@ msgid "Scale Polygon"
msgstr "МаÑштабувати полігон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "З'єднати дві точки Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ñƒ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "Виберіть поділ Ð´Ð»Ñ Ð²Ð¸Ñ‚Ð¸Ñ€Ð°Ð½Ð½Ñ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "Малювати ваги вказаною інтенÑивніÑÑ‚ÑŽ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "СкаÑувати Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð°Ð³Ð¸ вказаною інтенÑивніÑÑ‚ÑŽ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5436,7 +5418,6 @@ msgid "Error writing TextFile:"
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби запиÑати TextFile:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл."
@@ -5449,19 +5430,23 @@ msgid "Error saving file!"
msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ¼Ð¸"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "Помилка збереженнÑ"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "Помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "Помилка імпортуваннÑ"
#: editor/plugins/script_editor_plugin.cpp
@@ -5481,6 +5466,14 @@ msgid "Import Theme"
msgstr "Імпортувати тему"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ¼Ð¸"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "Помилка збереженнÑ"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "Зберегти тему Ñк..."
@@ -5510,19 +5503,20 @@ msgstr "ПереміÑтити вниз"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
-msgstr "ÐаÑтупний Ñценарій"
+msgstr "ÐаÑтупний Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "Previous script"
-msgstr "Попередній Ñценарій"
+msgstr "Попередній Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
msgstr "Файл"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "Ðовий текÑтовий файл"
+#, fuzzy
+msgid "Open..."
+msgstr "Відкрити"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5530,16 +5524,15 @@ msgstr "Зберегти вÑе"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
-msgstr "Ðœ'Ñко перезавантажити Ñценарії"
+msgstr "Ðœ'Ñко перезавантажити Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "Copy Script Path"
msgstr "Копіювати шлÑÑ… до Ñкрипту"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
-msgstr "Попередній файл"
+msgstr "Попередній у журналі"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Next"
@@ -5551,6 +5544,11 @@ msgid "Theme"
msgstr "Тема"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "Імпортувати тему"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "Перезавантажити тему"
@@ -5559,10 +5557,6 @@ msgid "Save Theme"
msgstr "Зберегти тему"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Зберегти тему Ñк"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Закрити документацію"
@@ -5580,7 +5574,7 @@ msgstr "ЗапуÑтити"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
-msgstr "Перемкнути панель Ñценаріїв"
+msgstr "Перемкнути панель Ñкриптів"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -5609,7 +5603,6 @@ msgid "Keep Debugger Open"
msgstr "Залишити зневаджувач відкритим"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
msgstr "Ð—Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою зовнішнього редактора"
@@ -5654,7 +5647,6 @@ msgid "Debugger"
msgstr "Зневаджувач"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "Результати пошуку"
@@ -5667,9 +5659,12 @@ msgid "(ignore)"
msgstr "(ігнорувати)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "Перейти до функції..."
+msgstr "Перейти до функції"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "Стандартний"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5703,10 +5698,6 @@ msgstr "З Великої"
msgid "Syntax Highlighter"
msgstr "ЗаÑіб підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "Стандартний"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5758,12 +5749,10 @@ msgid "Trim Trailing Whitespace"
msgstr "Обрізати кінцевий пробіл"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "Перетворити відÑтуп на пропуÑки"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
msgstr "Перетворити відÑтуп на табулÑції"
@@ -5781,12 +5770,10 @@ msgid "Remove All Breakpoints"
msgstr "Вилучити вÑÑ– точки зупинки"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "Перейти до наÑтупної точки зупинки"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "Перейти до попередньої точки зупинки"
@@ -5795,17 +5782,14 @@ msgid "Find Previous"
msgstr "Знайти попереднє"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "Знайти у файлах…"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
msgstr "Перейти до функції..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
msgstr "Перейти до Ñ€Ñдка..."
@@ -5898,13 +5882,12 @@ msgid "Animation Key Inserted."
msgstr "Ð’Ñтавлено ключ анімації."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Перемикач"
+msgstr "ХилитаннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "ВідхиленнÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6071,9 +6054,8 @@ msgid "Freelook Speed Modifier"
msgstr "Коефіцієнт швидкоÑÑ‚Ñ– оглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
-msgstr "ЗафікÑувати Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду"
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду заблоковано"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
@@ -6409,12 +6391,18 @@ msgid "Set Region Rect"
msgstr "Ð’Ñтановити прÑмокутник облаÑÑ‚Ñ–"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "Ð’Ñтановити обробник"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Режим прилипаннÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
-msgstr "<Ðемає>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ðемає"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
@@ -6577,9 +6565,8 @@ msgid "Fix Invalid Tiles"
msgstr "Виправити некоректні плитки"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "Центрувати на вибраному"
+msgstr "Вирізати позначене"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6626,39 +6613,37 @@ msgid "Pick Tile"
msgstr "Вибрати плитку"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "ПереÑунути позначене"
+msgstr "Копіювати позначене"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "Режим повороту"
+msgstr "Обертати ліворуч"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "Повернути полігон"
+msgstr "Обертати праворуч"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "Відзеркалити горизонтально"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "Віддзеркалити вертикально"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "ПеретвореннÑ"
+msgstr "ЗнÑти перетвореннÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Додати текÑтури до TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Вилучити поточну текÑтуру з TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6670,19 +6655,38 @@ msgid "Merge from Scene"
msgstr "Об'єднати зі Ñцени"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"Виберіть підплитку Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñк піктограми. Її також буде викориÑтано "
-"Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… прив'Ñзок у режимі автоплитки."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "Показувати назви плиток (Ñкщо утримують клавішу Alt)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Ð’Ñтавити анімацію"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "Витерти точки."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Створити новий полігон з нулÑ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "Показувати назви плиток (Ñкщо утримують клавішу Alt)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
msgstr "Вилучити позначену текÑтуру Ñ– уÑÑ– плитки, у Ñких Ñ—Ñ— викориÑтано?"
@@ -6699,9 +6703,8 @@ msgid "Merge from scene?"
msgstr "Об'єднати зі Ñцени?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " файлів не додано, оÑкільки вони вже були у ÑпиÑку."
+msgstr "%s файлів не додано, оÑкільки вони вже були у ÑпиÑку."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6712,21 +6715,32 @@ msgstr ""
"Клацніть на іншій плитці, щоб редагувати її."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Видалити вибрані файли?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
-"Ліва кнопка: вÑтановити біт.\n"
-"Права кнопка: знÑти біт.\n"
+"Вибрати поточну редаговану вкладену плитку.\n"
"Клацніть на іншій плитці, щоб редагувати її."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Видалити точки"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
-"Вибрати поточну редаговану вкладену плитку.\n"
+"Ліва кнопка: вÑтановити біт.\n"
+"Права кнопка: знÑти біт.\n"
"Клацніть на іншій плитці, щоб редагувати її."
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6748,11 +6762,21 @@ msgstr ""
"Клацніть на іншій плитці, щоб редагувати її."
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"Позначте підплитку Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ Ñ—Ñ— пріоритетноÑÑ‚Ñ–.\n"
+"Клацніть на іншій плитці, щоб редагувати її."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– не можна змінювати."
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "Ðабір плитки"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6768,6 +6792,11 @@ msgid "Light"
msgstr "Світло"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "Додати вузол…"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "Візуальний шейдер"
@@ -6790,12 +6819,11 @@ msgstr ""
#: editor/project_export.cpp
msgid "Release"
-msgstr ""
+msgstr "ВипуÑк"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "ЕкÑпортуваннÑ"
+msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑього"
#: editor/project_export.cpp
msgid "Presets"
@@ -6807,8 +6835,8 @@ msgstr "Додати..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "ЕкÑпортувати проект"
+msgid "Export Path"
+msgstr "ШлÑÑ… екÑпорту:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6873,14 +6901,12 @@ msgid "Export PCK/Zip"
msgstr "ЕкÑпортувати PCK/Zip"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Режим екÑпортуваннÑ:"
+msgstr "Режим екÑпортуваннÑ?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "ЕкÑпортуваннÑ"
+msgstr "ЕкÑпортувати уÑе"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7569,7 +7595,6 @@ msgid "Step"
msgstr "Крок"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "Величина, на Ñку збільшуєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ вузла"
@@ -7578,7 +7603,6 @@ msgid "Padding"
msgstr "ФаÑка"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7727,6 +7751,8 @@ msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
msgstr ""
+"Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«editable_instance» призведе до Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… значень Ð´Ð»Ñ "
+"уÑÑ–Ñ… влаÑтивоÑтей вузла."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7801,9 +7827,8 @@ msgid "Clear Inheritance"
msgstr "УÑунути уÑпадкуваннÑ"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "Відкрити онлайнову документацію Godot"
+msgstr "Відкрити документацію"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7818,9 +7843,8 @@ msgid "Change Type"
msgstr "Змінити тип"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
-msgstr "Відкрити Ñценарій"
+msgstr "Розширити Ñкрипт"
#: editor/scene_tree_dock.cpp
msgid "Make Scene Root"
@@ -7908,7 +7932,7 @@ msgstr ""
#: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp
msgid "Open Script"
-msgstr "Відкрити Ñценарій"
+msgstr "Відкрити Ñкрипт"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -7983,9 +8007,8 @@ msgid "Path is empty"
msgstr "Порожній шлÑÑ…"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Спрайт порожній!"
+msgstr "Ðазва файла Ñ” порожньою"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -8076,9 +8099,8 @@ msgid "Bytes:"
msgstr "Байтів:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "СтоÑувати кадри"
+msgstr "ТраÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтека"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8305,7 +8327,8 @@ msgid "GDNative"
msgstr "GD Native"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "аргумент кроку дорівнює нулеві!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8528,7 +8551,7 @@ msgstr "Кінець траÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтека Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "Запекти NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8912,12 +8935,11 @@ msgstr "Шукати VisualScript"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "Отримати %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "Ð’Ñтановити "
+msgstr "Ð’Ñтановити %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -9015,6 +9037,8 @@ msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ CPUParticles2D потребує викориÑÑ‚Ð°Ð½Ð½Ñ CanvasItemMaterial із "
+"увімкненим параметром «ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñток»."
#: scene/2d/light_2d.cpp
msgid ""
@@ -9072,6 +9096,8 @@ msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
msgstr ""
+"ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Particles2D потребує викориÑÑ‚Ð°Ð½Ð½Ñ CanvasItemMaterial із увімкненим "
+"параметром «ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñток»."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9216,16 +9242,16 @@ msgstr ""
"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr ""
-"Ðічого не видно, оÑкільки Ñітки не було пов'Ñзано із проходами малюваннÑ."
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "Ðічого не видно, оÑкільки не призначено Ñітки."
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
msgstr ""
+"ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ CPUParticles потребує викориÑÑ‚Ð°Ð½Ð½Ñ SpatialMaterial із увімкненим "
+"параметром «ЧаÑтки дошки»."
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9234,8 +9260,8 @@ msgstr "Побудова Ñітки"
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
-"РеÑÑƒÑ€Ñ Ðавігаційна Ñітка повинен бути вÑтановлений або Ñтворений Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ "
-"цього вузла."
+"Ð”Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ цього вузла Ñлід вÑтановити або Ñтворити реÑÑƒÑ€Ñ Â«Ðавігаційна "
+"Ñітка»."
#: scene/3d/navigation_mesh.cpp
msgid ""
@@ -9256,20 +9282,24 @@ msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
msgstr ""
+"ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñток потребує викориÑÑ‚Ð°Ð½Ð½Ñ SpatialMaterial із увімкненим "
+"параметром «ЧаÑтки дошки»."
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D працюватиме лише Ñк дочірній елемент вузла Path2D."
+msgstr "PathFollow працюватиме лише Ñк дочірній елемент вузла Path."
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D працюватиме лише Ñк дочірній елемент вузла Path2D."
+msgstr "OrientedPathFollow працюватиме лише Ñк дочірній елемент вузла Path."
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
+"OrientedPathFollow потребує Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð² у його батьківÑькому Path."
#: scene/3d/physics_body.cpp
msgid ""
@@ -9312,7 +9342,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "Це тіло буде проігноровано, аж доки ви не вÑтановите Ñітку"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9374,6 +9403,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr "Кореневий елемент AnimationPlayer не є коректним вузлом."
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Raw (Ñирий) режим"
@@ -9390,6 +9423,10 @@ msgstr "Увага!"
msgid "Please Confirm..."
msgstr "Будь лаÑка, підтвердьте..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9402,7 +9439,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "Якщо exp_edit має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ true, min_value має бути > 0."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9459,10 +9496,6 @@ msgstr "Ðекоректний розмір шрифту."
msgid "Input"
msgstr "Вхідні дані"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ðемає"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "Ðекоректне джерело програми побудови тіней."
@@ -9479,6 +9512,59 @@ msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ñ€Ñ–Ð´Ð½Ð¾Ð³Ð¾."
msgid "Varyings can only be assigned in vertex function."
msgstr "Змінні величини можна пов'Ñзувати лише із функцією вузлів."
+#~ msgid "Create Poly"
+#~ msgstr "Створити полігон"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ полігону з нулÑ"
+
+#~ msgid "Zoom out"
+#~ msgstr "Зменшити"
+
+#~ msgid "Zoom in"
+#~ msgstr "Збільшити"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "Створити полігон3D"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "Цей вузол не має реÑурÑу OccluderPolygon2D.\n"
+#~ "Створити і призначити?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ñнуючого полігону:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "ЛКМ: ПереміÑтити точку."
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "CTRL+ЛКМ: Розділити Ñегмент."
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "ПКМ: Стерти точку."
+
+#~ msgid "New TextFile"
+#~ msgstr "Ðовий текÑтовий файл"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Зберегти тему Ñк"
+
+#~ msgid "<None>"
+#~ msgstr "<Ðемає>"
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "Виберіть підплитку Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñк піктограми. Її також буде "
+#~ "викориÑтано Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… прив'Ñзок у режимі автоплитки."
+
+#~ msgid "Zoom:"
+#~ msgstr "МаÑштаб:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Ви Ñправді хочете вилучити уÑÑ– з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñигналу \""
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index eb509e1a82..757439de6b 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -8,15 +8,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2016-07-01 05:14+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
"Last-Translator: Muhammad Ali <ali@codeonion.com>\n"
"Language-Team: Urdu (Pakistan) <https://hosted.weblate.org/projects/godot-"
"engine/godot/ur_PK/>\n"
"Language: ur_PK\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.7-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -254,7 +256,6 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -523,15 +524,19 @@ msgstr ""
msgid "Selection Only"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr ""
@@ -540,7 +545,7 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-msgid "Zoom:"
+msgid "Font Size:"
msgstr ""
#: editor/code_editor.cpp
@@ -700,8 +705,8 @@ msgid "Recent:"
msgstr ""
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr ""
@@ -748,8 +753,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1206,8 +1210,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
@@ -1673,6 +1676,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2071,7 +2080,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2095,7 +2104,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2507,6 +2516,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2523,8 +2538,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "سب سکریپشن بنائیں"
@@ -2943,7 +2957,7 @@ msgstr ""
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "سب سکریپشن بنائیں"
@@ -3067,7 +3081,7 @@ msgid "Group name already exists."
msgstr ""
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3314,45 +3328,47 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr ".تمام کا انتخاب"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr ".تمام کا انتخاب"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
+msgid "Erase points."
msgstr ".تمام کا انتخاب"
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3397,17 +3413,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr ".تمام کا انتخاب"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr ".تمام کا انتخاب"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3483,7 +3488,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4020,7 +4024,7 @@ msgstr ""
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4173,15 +4177,15 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+msgid "Zoom Reset"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4440,7 +4444,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4545,35 +4558,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -4941,6 +4928,10 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Split Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -4968,6 +4959,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -4983,11 +4978,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5048,6 +5038,10 @@ msgstr ".تمام کا انتخاب"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5059,7 +5053,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5100,7 +5100,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5125,12 +5134,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "سب سکریپشن بنائیں"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr ".تمام کا انتخاب"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5157,19 +5162,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5307,19 +5312,19 @@ msgid "Error saving file!"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+msgid "Error while saving theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+msgid "Error Saving"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+msgid "Error importing theme."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+msgid "Error Importing"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5340,6 +5345,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5381,7 +5394,7 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
+msgid "Open..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5410,15 +5423,15 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
+msgid "Import Theme..."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5527,6 +5540,10 @@ msgstr ""
msgid "Go to Function"
msgstr ".تمام کا انتخاب"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5559,10 +5576,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6259,11 +6272,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6504,12 +6522,12 @@ msgid "Clear transform"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr ".تمام کا انتخاب"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6521,13 +6539,33 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Paste bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6557,15 +6595,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6583,11 +6631,17 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6603,6 +6657,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6639,7 +6697,7 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
+msgid "Export Path"
msgstr ""
#: editor/project_export.cpp
@@ -8102,7 +8160,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "سٹیپ Ú©Û’ ارگمنٹس سÙر Ûیں!"
#: modules/gdscript/gdscript_functions.cpp
@@ -8955,7 +9014,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -8998,7 +9057,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9086,6 +9147,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9102,6 +9167,10 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9158,10 +9227,6 @@ msgstr ""
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr ""
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 950964a00c..40496c80b5 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -11,15 +11,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-10-05 02:39+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
"Last-Translator: 01lifeleft <01lifeleft@gmail.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/"
"godot/vi/>\n"
"Language: vi\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.2-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -263,7 +265,6 @@ msgstr "Tạo %d track mới và chèn key?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -540,15 +541,19 @@ msgstr "Thay thế tất cả"
msgid "Selection Only"
msgstr "Chỉ lá»±a chá»n"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Phóng to"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "Thu nhá»"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "Äặt lại phóng"
@@ -557,9 +562,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "Phóng to"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -727,8 +731,8 @@ msgid "Recent:"
msgstr "Gần đây:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "Tìm kiếm:"
@@ -776,8 +780,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -1229,8 +1232,7 @@ msgid "Node Name:"
msgstr "Tên Node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Tên"
@@ -1705,6 +1707,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2110,7 +2118,7 @@ msgid "Undo"
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr ""
@@ -2134,7 +2142,7 @@ msgstr ""
msgid "Export"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr ""
@@ -2549,6 +2557,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2565,8 +2579,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -2982,7 +2995,7 @@ msgstr "Nhân đôi..."
msgid "Move To..."
msgstr "Di chuyển đến..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "Tạo Script"
@@ -3123,7 +3136,7 @@ msgstr "LỖI: Tên animation trùng lặp!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "Kích thước font không hợp lệ."
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3374,44 +3387,45 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "Tạo"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "Tạo"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+msgid "Remove Polygon And Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "Tạo Script"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -3456,16 +3470,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "Tạo Script"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3543,7 +3547,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4092,7 +4095,7 @@ msgstr "Tất cả"
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr ""
@@ -4241,21 +4244,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "Thu nhá»"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "Thu nhá»"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "Phóng to"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4511,7 +4512,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "Tạo"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4613,35 +4623,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5009,6 +4993,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "Sá»­a Node Curve"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5036,6 +5025,10 @@ msgid "Click: Add Point"
msgstr "Nhấp: Tạo Point"
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "Nhấp chuột phải: Xóa Point"
@@ -5051,11 +5044,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "Xóa Point"
@@ -5112,6 +5100,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5123,7 +5115,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5165,7 +5163,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "Tạo"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5190,12 +5197,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "Tạo"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "Di chuyển đến..."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5222,20 +5225,20 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr "Chá»n má»™t Folder để Quét"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5374,20 +5377,24 @@ msgid "Error saving file!"
msgstr "Lỗi tải font."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "Lá»—i khi lÆ°u scene."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "Lỗi di chuyển:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "Lá»—i khi lÆ°u scene."
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "Lỗi di chuyển:"
#: editor/plugins/script_editor_plugin.cpp
msgid "New TextFile..."
@@ -5408,6 +5415,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5448,8 +5463,9 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr ""
+#, fuzzy
+msgid "Open..."
+msgstr "Mở"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5478,6 +5494,10 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Import Theme..."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr ""
@@ -5486,10 +5506,6 @@ msgid "Save Theme"
msgstr "LÆ°u Theme"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "Lưu Theme thành"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "Äóng Docs"
@@ -5596,6 +5612,10 @@ msgstr ""
msgid "Go to Function"
msgstr "Thêm Hàm"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5628,10 +5648,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6327,14 +6343,19 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
+msgid "Set Margin"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Không có"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -6571,11 +6592,13 @@ msgid "Clear transform"
msgstr "Äổi Transform Animation"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "Chèn Texture(s) vào TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "Xóa Texture hiện tại từ TileSet"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6587,13 +6610,33 @@ msgid "Merge from Scene"
msgstr "Gộp từ Scene"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "Dán Animation"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Erase bitmask."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "Tạo"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6623,15 +6666,25 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "Xoá lá»±a chá»n"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "Tạo"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr ""
@@ -6649,13 +6702,20 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "This property can't be changed."
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "TileSet"
+msgstr "Xuất Tile Set"
+
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vertex"
msgstr ""
@@ -6669,6 +6729,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6705,8 +6769,9 @@ msgid "Add..."
msgstr ""
#: editor/project_export.cpp
-msgid "Export Path:"
-msgstr ""
+#, fuzzy
+msgid "Export Path"
+msgstr "Xuất Tile Set"
#: editor/project_export.cpp
msgid "Resources"
@@ -8165,7 +8230,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9012,7 +9077,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9055,7 +9120,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9144,6 +9211,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9160,6 +9231,10 @@ msgstr "Cảnh báo!"
msgid "Please Confirm..."
msgstr "Xin hãy xác nhận..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9219,10 +9294,6 @@ msgstr "Kích thước font không hợp lệ."
msgid "Input"
msgstr "Nhập"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Không có"
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "nguồn vô hiệu cho shader."
@@ -9239,6 +9310,21 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "Thu nhá»"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "Phóng to"
+
+#~ msgid "Save Theme As"
+#~ msgstr "Lưu Theme thành"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "Phóng to"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "Bạn có chắc muốn xóa bỠtất cả kết nối từ \""
@@ -9294,9 +9380,6 @@ msgstr ""
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Äổi phép ná»™i suy Anim Track"
-#~ msgid "Edit Node Curve"
-#~ msgstr "Sá»­a Node Curve"
-
#~ msgid "Anim Add Key"
#~ msgstr "Thêm Key Anim"
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 169c31c1c3..681ab90e27 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -13,7 +13,7 @@
# Geequlim <geequlim@gmail.com>, 2016-2018.
# jie Shi <meishijiemeimeimei@gmail.com>, 2018.
# Jingtian Pan <panjingtian@126.com>, 2018.
-# lalalaring <783482203@qq.com>, 2017.
+# lalalaring <783482203@qq.com>, 2017, 2018.
# Luo Jun <vipsbpig@gmail.com>, 2016-2017, 2018.
# oberon-tonya <360119124@qq.com>, 2016.
# plumsky <x-wolf@163.com>, 2018.
@@ -34,12 +34,14 @@
# 刘庆文 <liuqingwen@163.com>, 2018.
# Haowen Liu <liu.haowen.andy@gmail.com>, 2018.
# tangdou1 <1093505442@qq.com>, 2018.
+# yzt <834950797@qq.com>, 2018.
+# DKLost <514dklost@gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2018-11-26 16:10+0000\n"
-"Last-Translator: Luo Jun <vipsbpig@gmail.com>\n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
+"Last-Translator: tangdou1 <1093505442@qq.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -47,7 +49,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -228,7 +230,7 @@ msgstr "触å‘器"
#: editor/animation_track_editor.cpp
msgid "Capture"
-msgstr "æ•èŽ·"
+msgstr "截图"
#: editor/animation_track_editor.cpp
msgid "Nearest"
@@ -280,7 +282,6 @@ msgstr "创建%d个新轨é“并æ’入关键帧?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -425,14 +426,12 @@ msgid "Delete Selection"
msgstr "删除已选中项"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
msgstr "å‰å¾€ä¸‹ä¸€æ­¥"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "å‰å¾€ä¸Šä¸€æ­¥"
+msgstr "返回上一步"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -554,15 +553,19 @@ msgstr "全部替æ¢"
msgid "Selection Only"
msgstr "仅选中"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "缩å°"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "é‡ç½®ç¼©æ”¾"
@@ -571,8 +574,8 @@ msgid "Warnings:"
msgstr "警告:"
#: editor/code_editor.cpp
-msgid "Zoom:"
-msgstr "缩放:"
+msgid "Font Size:"
+msgstr "字体大å°:"
#: editor/code_editor.cpp
msgid "Line:"
@@ -683,9 +686,8 @@ msgid "Edit Connection: "
msgstr "编辑广播订阅: "
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr "你确定è¦ä»Žè¯¥å¹¿æ’­ä¿¡å·ä¸­ç§»é™¤æ‰€æœ‰è¿žæŽ¥å—?"
+msgstr "你确定è¦ä»Žä¿¡å· “%s†中移除所有连接å—?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -730,8 +732,8 @@ msgid "Recent:"
msgstr "最近文件:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "æœç´¢:"
@@ -778,8 +780,7 @@ msgid "Resource"
msgstr "资æº"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "路径"
@@ -833,9 +834,8 @@ msgid "Error loading:"
msgstr "加载出错:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "加载场景失败,找ä¸åˆ°ä»¥ä¸‹ä¾èµ–项目:"
+msgstr "由于缺少ä¾èµ–项, 加载失败:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1234,8 +1234,7 @@ msgid "Node Name:"
msgstr "节点å称:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "å称"
@@ -1313,24 +1312,21 @@ msgid "File Exists, Overwrite?"
msgstr "文件已存在,确定è¦è¦†ç›–它å—?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "选择当å‰ç›®å½•"
+msgstr "选择此文件夹"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr "æ‹·è´è·¯å¾„"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "在资æºç®¡ç†å™¨ä¸­æ‰“å¼€"
+msgstr "在文件管ç†å™¨ä¸­æ‰“å¼€"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
#: editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "在资æºç®¡ç†å™¨ä¸­æ‰“å¼€"
+msgstr "在文件管ç†å™¨ä¸­æ˜¾ç¤º"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1354,7 +1350,7 @@ msgstr "打开å•ä¸ªæ–‡ä»¶"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open File(s)"
-msgstr "打开文件"
+msgstr "打开一个或多个文件"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a Directory"
@@ -1473,19 +1469,16 @@ msgid "Methods"
msgstr "方法"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods:"
-msgstr "方法"
+msgstr "方法:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "属性"
+msgstr "主题属性"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties:"
-msgstr "属性:"
+msgstr "Theme Properties:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -1512,14 +1505,12 @@ msgid "Constants:"
msgstr "常é‡:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description"
-msgstr "æè¿°"
+msgstr "类说明"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Class Description:"
-msgstr "æè¿°:"
+msgstr "类说明:"
#: editor/editor_help.cpp
msgid "Online Tutorials:"
@@ -1535,14 +1526,12 @@ msgstr ""
"url][/color]çš„æ–¹å¼å¸®åŠ©æˆ‘们完善文档。"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "属性æ述:"
+msgstr "属性说明"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions:"
-msgstr "属性æ述:"
+msgstr "属性说明:"
#: editor/editor_help.cpp
msgid ""
@@ -1553,14 +1542,12 @@ msgstr ""
"[/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "方法æè¿°:"
+msgstr "方法说明"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions:"
-msgstr "方法æè¿°:"
+msgstr "方法说明:"
#: editor/editor_help.cpp
msgid ""
@@ -1576,49 +1563,40 @@ msgid "Search Help"
msgstr "æœç´¢å¸®åŠ©"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "显示法线"
+msgstr "全部显示"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Classes Only"
-msgstr "类型"
+msgstr "ä»…é™ç±»"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "方法"
+msgstr "仅方法"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "ä¿¡å·"
+msgstr "ä»…ä¿¡å·"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "常é‡"
+msgstr "仅常é‡"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "属性"
+msgstr "仅属性"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "属性"
+msgstr "仅主题属性"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "æˆå‘˜"
+msgstr "æˆå‘˜ç±»åž‹"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "ç±»:"
+msgstr "ç±»"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -1717,13 +1695,21 @@ msgstr "æ­¤æ“作必须在打开一个场景åŽæ‰èƒ½æ‰§è¡Œã€‚"
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"无法ä¿å­˜æ­¤åœºæ™¯ï¼Œå› ä¸ºåŒ…å«å¾ªçŽ¯å®žä¾‹åŒ–。\n"
+"请解决它,然åŽå°è¯•å†æ¬¡ä¿å­˜ã€‚"
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr "无法ä¿å­˜åœºæ™¯ï¼Œä¾èµ–项(实例或基类)验è¯å¤±è´¥ã€‚"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "Can't overwrite scene that is still open!"
-msgstr ""
+msgstr "无法覆盖ä»å¤„于打开状æ€çš„场景!"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1967,11 +1953,10 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "无法从路径中加载æ’件脚本: \"%s\"。"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
-msgstr "无法从路径加载æ’件脚本: \"%s\" 脚本ä¸åœ¨å·¥å…·æ¨¡å¼ä¸‹ã€‚"
+msgstr "无法从路径加载æ’件脚本: ‘%s’ 脚本看上去似乎有代ç é”™è¯¯ï¼Œè¯·æ£€æŸ¥å…¶è¯­æ³•ã€‚"
#: editor/editor_node.cpp
msgid ""
@@ -2020,9 +2005,8 @@ msgstr "默认"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "在资æºç®¡ç†å™¨ä¸­å±•ç¤º"
+msgstr "在文件系统中显示"
#: editor/editor_node.cpp
msgid "Play This Scene"
@@ -2050,7 +2034,7 @@ msgstr "%d 个文件未展示"
#: editor/editor_node.cpp
msgid "Dock Position"
-msgstr "åœé åŒºä½ç½®"
+msgstr "é¢æ¿ä½ç½®"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
@@ -2105,7 +2089,6 @@ msgid "Save Scene"
msgstr "ä¿å­˜åœºæ™¯"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
msgstr "ä¿å­˜æ‰€æœ‰åœºæ™¯"
@@ -2135,7 +2118,7 @@ msgid "Undo"
msgstr "撤销"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "é‡åš"
@@ -2159,9 +2142,9 @@ msgstr "项目设置"
msgid "Export"
msgstr "导出"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
-msgstr "工具(tools)"
+msgstr "工具"
#: editor/editor_node.cpp
msgid "Open Project Data Folder"
@@ -2579,9 +2562,17 @@ msgstr "分é……。"
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
+"无法在ä¿å­˜ä¸ºæ–‡ä»¶çš„资æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†ã€‚\n"
+"资æºéœ€è¦å±žäºŽåœºæ™¯ã€‚"
#: editor/editor_properties.cpp
msgid ""
@@ -2590,13 +2581,14 @@ msgid ""
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
+"无法在此资æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†, 因为它未设置为本地到场景。\n"
+"请打开上é¢çš„ `本地到场景` 属性 (以åŠåŒ…å«å®ƒçš„所有资æºåˆ°èŠ‚点)。"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
msgstr "选择1个视å£"
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr "新建脚本"
@@ -2771,7 +2763,7 @@ msgstr "导入:"
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
-msgstr "当å‰ç‰ˆæœ¬æ²¡æœ‰ä¸‹è½½é“¾æŽ¥ã€‚仅有官方正å¼ç‰ˆæ供直链下载。"
+msgstr "没有找到这个版本的下载链接。直接下载åªé€‚用于正å¼ç‰ˆæœ¬ã€‚"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2900,9 +2892,8 @@ msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
msgstr "无法以å¯å†™æ–¹å¼æ‰“å¼€file_type_cache.cchï¼"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "收è—:"
+msgstr "收è—夹"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
@@ -2985,14 +2976,12 @@ msgid "Instance"
msgstr "创建实例节点"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to favorites"
-msgstr "收è—:"
+msgstr "添加到收è—夹"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Remove from favorites"
-msgstr "从分组中移除"
+msgstr "从收è—夹中删除"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies..."
@@ -3014,7 +3003,7 @@ msgstr "æ‹·è´..."
msgid "Move To..."
msgstr "移动..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
msgid "New Script..."
msgstr "新建脚本…"
@@ -3023,14 +3012,12 @@ msgid "New Resource..."
msgstr "新建资æºâ€¦"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Expand All"
-msgstr "展开所有"
+msgstr "全部展开"
#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Collapse All"
-msgstr "收起所有"
+msgstr "全部折å "
#: editor/filesystem_dock.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -3052,9 +3039,8 @@ msgid "Re-Scan Filesystem"
msgstr "é‡æ–°æ‰«æ文件系统"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Toggle split mode"
-msgstr "切æ¢æ¨¡å¼"
+msgstr "切æ¢æ‹†åˆ†æ¨¡å¼"
#: editor/filesystem_dock.cpp
msgid "Search files"
@@ -3089,24 +3075,20 @@ msgid "Create Script"
msgstr "创建脚本"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find in Files"
msgstr "在文件中查找"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "查找: "
+msgstr "查找:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "文件夹: "
+msgstr "文件夹:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "筛选"
+msgstr "筛选:"
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -3146,7 +3128,8 @@ msgid "Group name already exists."
msgstr "分组å称已存在。"
#: editor/groups_editor.cpp
-msgid "invalid Group name."
+#, fuzzy
+msgid "Invalid group name."
msgstr "éžæ³•åˆ†ç»„å。"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3207,7 +3190,7 @@ msgstr "与独立的æ质和动画一åŒå¯¼å…¥"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials+Animations"
-msgstr "导入独立的物体ã€æ质和动画"
+msgstr "使用å•ç‹¬çš„对象 + æè´¨ + 动画导入"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
@@ -3283,14 +3266,12 @@ msgid "Failed to load resource."
msgstr "加载资æºå¤±è´¥ã€‚"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Expand All Properties"
msgstr "展开所有属性"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Collapse All Properties"
-msgstr "收起所有属性"
+msgstr "折å æ‰€æœ‰å±žæ€§"
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3394,14 +3375,13 @@ msgid "Activate now?"
msgstr "现在激活å—?"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create Polygon"
msgstr "创建多边形"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
+#, fuzzy
+msgid "Edit Polygon"
msgstr "编辑多边形"
#: editor/plugins/abstract_polygon_2d_editor.cpp
@@ -3409,25 +3389,27 @@ msgid "Insert Point"
msgstr "æ’入点"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+#, fuzzy
+msgid "Edit Polygon (Remove Point)"
msgstr "编辑多边形(移除顶点)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
+#, fuzzy
+msgid "Remove Polygon And Point"
msgstr "移除多边形åŠé¡¶ç‚¹"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr "创建一个新的多边形"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+msgid "Create points."
+msgstr "创建点。"
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
"编辑多边形:\n"
"LMB: 移动点。\n"
@@ -3435,8 +3417,9 @@ msgstr ""
"人民å¸ï¼š 擦除点。"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Delete points"
-msgstr "删除点"
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+msgid "Erase points."
+msgstr "擦除点。"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3482,15 +3465,6 @@ msgstr "选择并移动点,使用 RMB 创建点。"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr "创建点。"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr "擦除点。"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr "点"
@@ -3566,7 +3540,6 @@ msgid ""
msgstr "动画播放器没有åˆæ³•çš„根节点路径,因此无法获å–轨é“å称。"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr "添加节点.."
@@ -4101,7 +4074,7 @@ msgstr "全部"
msgid "Plugins"
msgstr "æ’件"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "排åº:"
@@ -4228,9 +4201,8 @@ msgid "Resize CanvasItem"
msgstr "调整 CanvasItem 尺寸"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale CanvasItem"
-msgstr "旋转 CanvasItem"
+msgstr "缩放包å«é¡¹"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
@@ -4253,18 +4225,19 @@ msgid "Paste Pose"
msgstr "粘贴姿势"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom out"
-msgstr "缩å°"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom reset"
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
+#, fuzzy
+msgid "Zoom Reset"
msgstr "é‡ç½®ç¼©æ”¾"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom in"
-msgstr "放大"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "选择模å¼"
@@ -4293,9 +4266,8 @@ msgid "Rotate Mode"
msgstr "旋转模å¼"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Scale Mode"
-msgstr "缩放模å¼ï¼ˆR)"
+msgstr "缩放模å¼"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4392,9 +4364,8 @@ msgid "Restores the object's children's ability to be selected."
msgstr "æ¢å¤èŠ‚点的å­å­™èƒ½å¤Ÿè¢«é€‰ä¸­ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Skeleton Options"
-msgstr "骨架"
+msgstr "骨架选项"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -4448,7 +4419,7 @@ msgstr "显示视图窗å£"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "显示组和é”定图标"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -4521,8 +4492,17 @@ msgstr ""
"拖放+ Alt:更改节点类型"
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
-msgstr "创建 Poly3D (多边型3D)"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "创建多边形"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "编辑多边形"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "编辑多边形(移除顶点)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
@@ -4623,37 +4603,9 @@ msgid "Item List Editor"
msgstr "列表编辑器"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-"在这个节点上没有 OccluderPolygon2D 资æºã€‚\n"
-"创建和分é…一个å—?"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "添加é®å…‰å¤šè¾¹å½¢"
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "从头开始创建一个新的多边形。"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr "编辑已存在的多边形:"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr "鼠标左键:移动点。"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl+鼠标左键:分割视图å—。"
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr "é¼ æ ‡å³é”®:移除点。"
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr "Mesh为空ï¼"
@@ -4889,7 +4841,6 @@ msgid "Create Navigation Polygon"
msgstr "创建导航多边形"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Generating Visibility Rect"
msgstr "生æˆå¯è§†åŒ–区域"
@@ -5022,6 +4973,11 @@ msgid "Add Point to Curve"
msgstr "å‘曲线添加顶点"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "关闭曲线"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr "在曲线中移动顶点"
@@ -5049,6 +5005,11 @@ msgid "Click: Add Point"
msgstr "鼠标左键:添加点"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Left Click: Split Segment (in curve)"
+msgstr "拆分(曲线)"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr "é¼ æ ‡å³é”®:删除点"
@@ -5064,11 +5025,6 @@ msgstr "添加点(在空白处)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr "拆分(曲线)"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr "删除顶点"
@@ -5125,6 +5081,10 @@ msgstr "移除曲线外控制点"
msgid "Remove In-Control Point"
msgstr "移除曲线内控制点"
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr "拆分(曲线)"
+
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move joint"
msgstr "移动关节"
@@ -5135,10 +5095,18 @@ msgid ""
msgstr "Polygon2D 的骨架属性并没有指å‘一个 Skeleton2D 节点"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+#, fuzzy
+msgid "Sync Bones"
msgstr "åŒæ­¥éª¨éª¼"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
+msgstr "此节点没有贴图,请先为它设置贴图åŽå†è¯•ã€‚"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
msgstr "创建UV贴图"
@@ -5175,10 +5143,21 @@ msgid "Transform UV Map"
msgstr "å˜æ¢UV贴图"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "å˜æ¢ç±»åž‹"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Paint Bone Weights"
msgstr "绘制骨骼æƒé‡"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "2D多边形UV编辑器"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr "2D多边形UV编辑器"
@@ -5199,16 +5178,13 @@ msgid "Bones"
msgstr "骨骼"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr "创建多边形"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
+#, fuzzy
+msgid "Move Points"
msgstr "移动点"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
-msgstr "Ctrl:旋转"
+msgstr "Ctrl:旋转"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift: Move All"
@@ -5231,19 +5207,23 @@ msgid "Scale Polygon"
msgstr "缩放多边形"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+#, fuzzy
+msgid "Connect two points to make a split."
msgstr "连接两个点创建一个拆分"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+#, fuzzy
+msgid "Select a split to erase it."
msgstr "选择一个拆分以擦除它"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+#, fuzzy
+msgid "Paint weights with specified intensity."
msgstr "使用指定的强度进行æƒé‡ç»˜åˆ¶"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+#, fuzzy
+msgid "Unpaint weights with specified intensity."
msgstr "使用指定强度清除æƒé‡ç»˜åˆ¶"
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5369,9 +5349,8 @@ msgid "Error writing TextFile:"
msgstr "写入文本文件时出错:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error: could not load file."
-msgstr "错误,无法加载文件。"
+msgstr "错误:无法加载文件。"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error could not load file."
@@ -5382,19 +5361,23 @@ msgid "Error saving file!"
msgstr "ä¿å­˜æ–‡ä»¶æ—¶å‡ºé”™ï¼"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
+#, fuzzy
+msgid "Error while saving theme."
msgstr "ä¿å­˜ä¸»é¢˜å‡ºé”™"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
+#, fuzzy
+msgid "Error Saving"
msgstr "ä¿å­˜å‡ºé”™"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
+#, fuzzy
+msgid "Error importing theme."
msgstr "导入主题出错"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
+#, fuzzy
+msgid "Error Importing"
msgstr "导入出错"
#: editor/plugins/script_editor_plugin.cpp
@@ -5414,6 +5397,14 @@ msgid "Import Theme"
msgstr "导入主题"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr "ä¿å­˜ä¸»é¢˜å‡ºé”™"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr "ä¿å­˜å‡ºé”™"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr "主题å¦å­˜ä¸º..."
@@ -5454,8 +5445,9 @@ msgid "File"
msgstr "文件"
#: editor/plugins/script_editor_plugin.cpp
-msgid "New TextFile"
-msgstr "新建文本文件"
+#, fuzzy
+msgid "Open..."
+msgstr "打开"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5470,7 +5462,6 @@ msgid "Copy Script Path"
msgstr "æ‹·è´è„šæœ¬è·¯å¾„"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "History Previous"
msgstr "åŽé€€"
@@ -5484,6 +5475,11 @@ msgid "Theme"
msgstr "主题"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Import Theme..."
+msgstr "导入主题"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
msgstr "é‡æ–°åŠ è½½ä¸»é¢˜"
@@ -5492,10 +5488,6 @@ msgid "Save Theme"
msgstr "ä¿å­˜ä¸»é¢˜"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
-msgstr "主题å¦å­˜ä¸º"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
msgstr "关闭文档"
@@ -5542,7 +5534,6 @@ msgid "Keep Debugger Open"
msgstr "ä¿æŒè°ƒè¯•å™¨æ‰“å¼€"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with External Editor"
msgstr "使用外部编辑器进行调试"
@@ -5587,7 +5578,6 @@ msgid "Debugger"
msgstr "调试器"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Search Results"
msgstr "æœç´¢ç»“æžœ"
@@ -5600,9 +5590,12 @@ msgid "(ignore)"
msgstr "(忽略)"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function"
-msgstr "å‰å¾€å‡½æ•°..."
+msgstr "转到函数"
+
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr "标准"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -5636,10 +5629,6 @@ msgstr "首字æ¯å¤§å†™"
msgid "Syntax Highlighter"
msgstr "语法高亮显示"
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr "标准"
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -5691,14 +5680,12 @@ msgid "Trim Trailing Whitespace"
msgstr "修剪行åŽç©ºç™½"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Spaces"
msgstr "将缩进转为空格"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent to Tabs"
-msgstr "将缩进转为Tab"
+msgstr "将缩进转为Tabs"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5714,12 +5701,10 @@ msgid "Remove All Breakpoints"
msgstr "移除所有断点"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Next Breakpoint"
msgstr "å‰å¾€ä¸‹ä¸€ä¸ªæ–­ç‚¹"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Previous Breakpoint"
msgstr "å‰å¾€ä¸Šä¸€ä¸ªæ–­ç‚¹"
@@ -5728,19 +5713,16 @@ msgid "Find Previous"
msgstr "查找上一项"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Find in Files..."
msgstr "在文件中查找..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
-msgstr "å‰å¾€å‡½æ•°..."
+msgstr "转到函数..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
-msgstr "å‰å¾€è¡Œ..."
+msgstr "转到行..."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
@@ -5836,7 +5818,7 @@ msgstr "音调"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "å航"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
@@ -6003,7 +5985,6 @@ msgid "Freelook Speed Modifier"
msgstr "自由视图速度调整"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Rotation Locked"
msgstr "é”定视角旋转"
@@ -6339,11 +6320,17 @@ msgid "Set Region Rect"
msgstr "设置纹ç†åŒºåŸŸ"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Margin"
+msgstr "设置处ç†ç¨‹åº"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "å¸é™„模å¼:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr "æ— "
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6507,9 +6494,8 @@ msgid "Fix Invalid Tiles"
msgstr "ä¿®å¤æ— æ•ˆçš„瓦片"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Cut Selection"
-msgstr "居中显示选中节点"
+msgstr "切割选择"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -6556,39 +6542,37 @@ msgid "Pick Tile"
msgstr "选择砖å—(Tile)"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "移动选中项"
+msgstr "å¤åˆ¶é€‰æ‹©"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate left"
-msgstr "旋转模å¼"
+msgstr "å‘左旋转"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Rotate right"
-msgstr "å‘å³ç§»åŠ¨"
+msgstr "å‘å³æ—‹è½¬"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip horizontally"
-msgstr ""
+msgstr "水平翻转"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip vertically"
-msgstr ""
+msgstr "垂直翻转"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear transform"
-msgstr "å˜æ¢"
+msgstr "清除å˜æ¢"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+#, fuzzy
+msgid "Add Texture(s) to TileSet."
msgstr "添加纹ç†åˆ°ç“¦ç‰‡é›†"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove current Texture from TileSet"
+#, fuzzy
+msgid "Remove selected Texture from TileSet."
msgstr "从瓦片集中删除当å‰çº¹ç†"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6600,18 +6584,38 @@ msgid "Merge from Scene"
msgstr "从场景中åˆå¹¶"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
-"请选择一个å­åœ°ç –(sub-tile)作为图标,此图标还会被绑定为无效的地砖(autotile)。"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
-msgstr "显示瓦片的åå­—ï¼ˆæŒ‰ä½ Alt 键)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "粘贴动画"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "擦除点。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "从头开始创建一个新的多边形。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid "Display Tile Names (Hold Alt Key)"
+msgstr "显示瓦片的åå­—ï¼ˆæŒ‰ä½ Alt 键)"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove selected texture and ALL TILES which use it?"
msgstr "确定移除选中的纹ç†ä»¥åŠã€æ‰€æœ‰ã€‘使用它的ã€ç“¦ç‰‡é›†ã€‘å—?"
@@ -6628,9 +6632,8 @@ msgid "Merge from scene?"
msgstr "确定è¦åˆå¹¶åœºæ™¯ï¼Ÿ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "%s file(s) were not added because was already on the list."
-msgstr " 文件没有被添加,因为已添加在列表中。"
+msgstr "%s 文件没有被添加,因为已添加在列表中。"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6641,14 +6644,9 @@ msgstr ""
"点击å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
-"Click on another Tile to edit it."
-msgstr ""
-"鼠标左键: å¯ç”¨æ¯”特。\n"
-"é¼ æ ‡å³é”®ï¼š 关闭比特。\n"
-"点击å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "删除选中的文件?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -6659,6 +6657,22 @@ msgstr ""
"点击选择å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "删除点"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"鼠标左键: å¯ç”¨æ¯”特。\n"
+"é¼ æ ‡å³é”®ï¼š 关闭比特。\n"
+"点击å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
"Select sub-tile to use as icon, this will be also used on invalid autotile "
"bindings.\n"
@@ -6676,11 +6690,21 @@ msgstr ""
"点击选择å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr ""
+"选择并修改å­ç“¦ç‰‡çš„优先级。\n"
+"点击选择å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "This property can't be changed."
msgstr "ä¸èƒ½ä¿®æ”¹è¯¥å±žæ€§ã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+#, fuzzy
+msgid "TileSet"
msgstr "ç –å—集"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6696,6 +6720,11 @@ msgid "Light"
msgstr "ç¯å…‰"
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "添加节点.."
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "å¯è§†ç€è‰²å™¨"
@@ -6716,14 +6745,12 @@ msgid "Export templates for this platform are missing/corrupted:"
msgstr "没有此平å°çš„导出模æ¿:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Release"
-msgstr "刚好释放"
+msgstr "å‘è¡Œ"
#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
-msgstr "正在导出 %s"
+msgstr "全部导出"
#: editor/project_export.cpp
msgid "Presets"
@@ -6735,8 +6762,8 @@ msgstr "添加..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
-msgstr "导出预设:"
+msgid "Export Path"
+msgstr "导出路径:"
#: editor/project_export.cpp
msgid "Resources"
@@ -6797,14 +6824,12 @@ msgid "Export PCK/Zip"
msgstr "导出 PCK/ZIP"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "导出模å¼:"
+msgstr "导出模å¼ï¼Ÿ"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All"
-msgstr "导出"
+msgstr "全部导出"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
@@ -7482,16 +7507,14 @@ msgid "Step"
msgstr "步长"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Amount by which counter is incremented for each node"
msgstr "由计数器增é‡å¾—到的æ¯ä¸ªèŠ‚点的总é‡"
#: editor/rename_dialog.cpp
msgid "Padding"
-msgstr "内边è·"
+msgstr "å¡«å……"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid ""
"Minimum number of digits for the counter.\n"
"Missing digits are padded with leading zeros."
@@ -7637,7 +7660,7 @@ msgstr "将新场景å¦å­˜ä¸º..."
msgid ""
"Disabling \"editable_instance\" will cause all properties of the node to be "
"reverted to their default."
-msgstr ""
+msgstr "ç¦ç”¨â€œå¯ç¼–辑实例â€å°†å¯¼è‡´èŠ‚点的所有属性æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚"
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -7710,9 +7733,8 @@ msgid "Clear Inheritance"
msgstr "清除继承"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Open documentation"
-msgstr "打开Godot在线文档"
+msgstr "打开Godot文档"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
@@ -7727,7 +7749,6 @@ msgid "Change Type"
msgstr "更改类型"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Extend Script"
msgstr "打开脚本"
@@ -7890,9 +7911,8 @@ msgid "Path is empty"
msgstr "文件路径为空"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty"
-msgstr "Sprite 是空的ï¼"
+msgstr "文件å为空"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
@@ -7983,9 +8003,8 @@ msgid "Bytes:"
msgstr "字节:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Stack Trace"
-msgstr "堆栈帧(Stack Frames)"
+msgstr "栈追踪"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
@@ -8212,7 +8231,8 @@ msgid "GDNative"
msgstr "GDNative"
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "stepå‚数为0ï¼"
#: modules/gdscript/gdscript_functions.cpp
@@ -8433,7 +8453,7 @@ msgstr "内部异常堆栈追朔结æŸ"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr ""
+msgstr "烘焙导航网"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -8806,12 +8826,11 @@ msgstr "æœç´¢å¯è§†åŒ–脚本节点"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Get %s"
-msgstr ""
+msgstr "得到 %s"
#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
msgid "Set %s"
-msgstr "设值 "
+msgstr "设值 %s"
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -8903,7 +8922,7 @@ msgstr "形状资æºå¿…须是通过CollisionShape2D节点的shape属性创建的
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
-msgstr ""
+msgstr "CPUParticles2D动画需è¦ä½¿ç”¨å¯ç”¨äº†â€œç²’å­åŠ¨ç”»â€çš„CanvasItemMaterial。"
#: scene/2d/light_2d.cpp
msgid ""
@@ -8951,7 +8970,7 @@ msgstr "ç²’å­æ质没有指定,该行为无效。"
msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
-msgstr ""
+msgstr "Particles2D 动画需è¦ä½¿ç”¨å¯ç”¨äº†â€œç²’å­åŠ¨ç”»â€çš„CanvasItemMaterial。"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -9083,15 +9102,14 @@ msgstr ""
"æºï¼"
#: scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Nothing is visible because no mesh has not been assigned."
-msgstr "ç²’å­ä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw passes)。"
+msgid "Nothing is visible because no mesh has been assigned."
+msgstr "无物å¯è§ï¼Œå› ä¸ºæ²¡æœ‰æŒ‡å®šç½‘格。"
#: scene/3d/cpu_particles.cpp
msgid ""
"CPUParticles animation requires the usage of a SpatialMaterial with "
"\"Billboard Particles\" enabled."
-msgstr ""
+msgstr "CPUParticles动画需è¦ä½¿ç”¨å¯åŠ¨äº†â€œBillboard Particlesâ€çš„SpatialMaterial。"
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -9117,21 +9135,23 @@ msgstr "ç²’å­ä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw pa
msgid ""
"Particles animation requires the usage of a SpatialMaterial with \"Billboard "
"Particles\" enabled."
-msgstr ""
+msgstr "ç²’å­åŠ¨ç”»éœ€è¦ä½¿ç”¨å¯ç”¨äº†â€œBillboard Particlesâ€çš„SpatialMaterial。"
#: scene/3d/path.cpp
-#, fuzzy
msgid "PathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D类型的节点åªæœ‰ä½œä¸ºPath2Dçš„å­èŠ‚点节æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+msgstr "PathFollow类型的节点åªæœ‰ä½œä¸ºPath类型节点的å­èŠ‚点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/3d/path.cpp
-#, fuzzy
msgid "OrientedPathFollow only works when set as a child of a Path node."
-msgstr "PathFollow2D类型的节点åªæœ‰ä½œä¸ºPath2Dçš„å­èŠ‚点节æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+msgstr ""
+"OrientedPathFollow 类型的节点åªæœ‰ä½œä¸ºPath类型节点的å­èŠ‚点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
-msgstr ""
+#, fuzzy
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
+msgstr "OrientedPathFollow 需è¦å†å…¶çˆ¶è·¯å¾„中å¯ç”¨up vectors。"
#: scene/3d/physics_body.cpp
msgid ""
@@ -9169,7 +9189,6 @@ msgid "This body will be ignored until you set a mesh"
msgstr "这个物体将被忽略,除éžè®¾ç½®ä¸€ä¸ªç½‘æ ¼"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid ""
"Size changes to SoftBody will be overridden by the physics engine when "
"running.\n"
@@ -9230,6 +9249,10 @@ msgstr "动画播放器的路径没有加载一个 AnimationPlayer 节点。"
msgid "AnimationPlayer root is not a valid node."
msgstr "AnimationPlayer 的根节点ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„节点。"
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr "Raw 模å¼"
@@ -9246,6 +9269,10 @@ msgstr "æ示ï¼"
msgid "Please Confirm..."
msgstr "请确认..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9257,7 +9284,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If exp_edit is true min_value must be > 0."
-msgstr ""
+msgstr "如果exp_edit为true, 则min_value必须为>0。"
#: scene/gui/scroll_container.cpp
msgid ""
@@ -9309,10 +9336,6 @@ msgstr "字体大å°éžæ³•ã€‚"
msgid "Input"
msgstr "输入"
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "æ— "
-
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for shader."
msgstr "éžæ³•çš„ç€è‰²å™¨æºã€‚"
@@ -9329,6 +9352,59 @@ msgstr "对uniform的赋值。"
msgid "Varyings can only be assigned in vertex function."
msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
+#~ msgid "Create Poly"
+#~ msgstr "创建多边形"
+
+#~ msgid "Create a new polygon from scratch"
+#~ msgstr "创建一个新的多边形"
+
+#~ msgid "Zoom out"
+#~ msgstr "缩å°"
+
+#~ msgid "Zoom in"
+#~ msgstr "放大"
+
+#~ msgid "Create Poly3D"
+#~ msgstr "创建 Poly3D (多边型3D)"
+
+#~ msgid ""
+#~ "No OccluderPolygon2D resource on this node.\n"
+#~ "Create and assign one?"
+#~ msgstr ""
+#~ "在这个节点上没有 OccluderPolygon2D 资æºã€‚\n"
+#~ "创建和分é…一个å—?"
+
+#~ msgid "Edit existing polygon:"
+#~ msgstr "编辑已存在的多边形:"
+
+#~ msgid "LMB: Move Point."
+#~ msgstr "鼠标左键:移动点。"
+
+#~ msgid "Ctrl+LMB: Split Segment."
+#~ msgstr "Ctrl+鼠标左键:分割视图å—。"
+
+#~ msgid "RMB: Erase Point."
+#~ msgstr "é¼ æ ‡å³é”®:移除点。"
+
+#~ msgid "New TextFile"
+#~ msgstr "新建文本文件"
+
+#~ msgid "Save Theme As"
+#~ msgstr "主题å¦å­˜ä¸º"
+
+#~ msgid "<None>"
+#~ msgstr "æ— "
+
+#~ msgid ""
+#~ "Select sub-tile to use as icon, this will be also used on invalid "
+#~ "autotile bindings."
+#~ msgstr ""
+#~ "请选择一个å­åœ°ç –(sub-tile)作为图标,此图标还会被绑定为无效的地砖"
+#~ "(autotile)。"
+
+#~ msgid "Zoom:"
+#~ msgstr "缩放:"
+
#~ msgid "Are you sure you want to remove all connections from the \""
#~ msgstr "您确定è¦ç§»é™¤æ‰€æœ‰å¹¿æ’­è¿žæŽ¥ä»Ž \""
@@ -10045,9 +10121,6 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
#~ msgid "Source Font:"
#~ msgstr "æºå­—体文件:"
-#~ msgid "Source Font Size:"
-#~ msgstr "æºå­—体大å°:"
-
#~ msgid "Dest Resource:"
#~ msgstr "目标资æº:"
@@ -10851,11 +10924,6 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
#~ msgid "Scale Region Editor"
#~ msgstr "缩放区域编辑"
-#~ msgid ""
-#~ "No texture in this node.\n"
-#~ "Set a texture to be able to edit region."
-#~ msgstr "此节点没有贴图,请先为它设置贴图åŽå†è¯•ã€‚"
-
#~ msgid "Inherit Scene"
#~ msgstr "继承场景"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 41ac16cd12..02ac08be3d 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -8,7 +8,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-11-26 14:45+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
"Last-Translator: zx-wt <ZX_WT@ymail.com>\n"
"Language-Team: Chinese (Hong Kong) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hant_HK/>\n"
@@ -17,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -269,7 +270,6 @@ msgstr "新增 %d 個新軌跡並æ’入關éµå¹€ï¼Ÿ"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
#, fuzzy
@@ -563,15 +563,19 @@ msgstr "全部å–代"
msgid "Selection Only"
msgstr "åªé™é¸ä¸­"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "縮å°"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
@@ -580,9 +584,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "放大"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
#, fuzzy
@@ -750,8 +753,8 @@ msgid "Recent:"
msgstr "最近:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "æœå°‹ï¼š"
@@ -798,8 +801,7 @@ msgid "Resource"
msgstr "資æº"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "路徑"
@@ -1290,8 +1292,7 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "å稱"
@@ -1788,6 +1789,12 @@ msgstr "ä¸èƒ½åŸ·è¡Œé€™å€‹å‹•ä½œï¼Œå› ç‚ºæ²’有tree root."
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2215,7 +2222,7 @@ msgid "Undo"
msgstr "復原"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "é‡è£½"
@@ -2239,7 +2246,7 @@ msgstr "專案設定"
msgid "Export"
msgstr "匯出"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "工具"
@@ -2668,6 +2675,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2684,8 +2697,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "下一個腳本"
@@ -3135,7 +3147,7 @@ msgstr "複製"
msgid "Move To..."
msgstr "æ¬åˆ°..."
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "下一個腳本"
@@ -3274,7 +3286,7 @@ msgstr "錯誤:動畫å稱已存在ï¼"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "無效å稱"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3537,46 +3549,48 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "縮放selection"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "æ’件"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "åªé™é¸ä¸­"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "刪除"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
-msgstr "刪除"
+msgid "Erase points."
+msgstr "縮放selection"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3622,17 +3636,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "刪除"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "縮放selection"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3711,7 +3714,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
msgid "Add Node.."
msgstr "新增節點"
@@ -4270,7 +4272,7 @@ msgstr "全部"
msgid "Plugins"
msgstr "æ’件"
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "排åºï¼š"
@@ -4423,21 +4425,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "縮å°"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "縮å°"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "放大"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr "é¸æ“‡æ¨¡å¼"
@@ -4696,7 +4696,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "縮放selection"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4803,35 +4812,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5202,6 +5185,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "編輯Node Curve"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5229,6 +5217,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5244,11 +5236,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5309,6 +5296,10 @@ msgstr "åªé™é¸ä¸­"
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5320,7 +5311,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5364,10 +5361,20 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "縮放selection"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Open Polygon 2D UV editor."
+msgstr "開啟資料夾"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
msgstr ""
@@ -5389,12 +5396,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "縮放selection"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "下移"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5421,19 +5424,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5578,20 +5581,24 @@ msgid "Error saving file!"
msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "儲存時出ç¾éŒ¯èª¤"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "載入錯誤:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "載入場景時出ç¾éŒ¯èª¤"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "載入錯誤:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5613,6 +5620,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5655,8 +5670,8 @@ msgstr "檔案"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "檔案"
+msgid "Open..."
+msgstr "é–‹å•Ÿ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5686,15 +5701,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "如來如此"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5808,6 +5824,10 @@ msgstr ""
msgid "Go to Function"
msgstr "行為"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5841,10 +5861,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6565,11 +6581,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6815,12 +6836,12 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr "由主幹新增節點"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "åªé™é¸ä¸­"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6832,13 +6853,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "貼上動畫"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "縮放selection"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "縮放selection"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6868,16 +6910,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "刪除"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "新增資料夾"
@@ -6896,12 +6949,19 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "ä¸èƒ½åŸ·è¡Œé€™å€‹å‹•ä½œï¼Œå› ç‚ºæ²’有tree root."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Tile Set"
+msgid "TileSet"
msgstr "TileSet..."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6917,6 +6977,11 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node..."
+msgstr "新增節點"
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6958,7 +7023,7 @@ msgstr "添加..."
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "匯出"
#: editor/project_export.cpp
@@ -8471,7 +8536,7 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+msgid "Step argument is zero!"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
@@ -9354,7 +9419,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9397,7 +9462,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9489,6 +9556,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9505,6 +9576,10 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "請確èª..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9561,10 +9636,6 @@ msgstr "無效字型"
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9583,6 +9654,22 @@ msgid "Varyings can only be assigned in vertex function."
msgstr ""
#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "縮å°"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "放大"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "檔案"
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "放大"
+
+#, fuzzy
#~ msgid "Public Methods"
#~ msgstr "é¸æ“‡æ¨¡å¼"
@@ -9647,9 +9734,6 @@ msgstr ""
#~ msgid "Anim Track Change Value Mode"
#~ msgstr "動畫軌跡變化數值模å¼"
-#~ msgid "Edit Node Curve"
-#~ msgstr "編輯Node Curve"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "編輯Selection Curve"
@@ -9700,9 +9784,6 @@ msgstr ""
#~ msgid "Thanks!"
#~ msgstr "多è¬!"
-#~ msgid "I see..."
-#~ msgstr "如來如此"
-
#, fuzzy
#~ msgid "Can't open '%s'."
#~ msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
@@ -9807,9 +9888,6 @@ msgstr ""
#~ msgid "Removed:"
#~ msgstr "已移除:"
-#~ msgid "Error loading scene."
-#~ msgstr "載入場景時出ç¾éŒ¯èª¤"
-
#, fuzzy
#~ msgid "Tiles"
#~ msgstr "檔案"
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index fe162ba39e..3bf35bb328 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -15,15 +15,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2018-11-10 20:07+0000\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2018-12-13 14:44+0100\n"
"Last-Translator: ken l <macauhome@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hant/>\n"
"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.3-dev\n"
+"X-Generator: Poedit 2.2\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -266,7 +268,6 @@ msgstr "創建 %d 個新軌並æ’入畫格?"
#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp
#: editor/plugin_config_dialog.cpp
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
@@ -544,15 +545,19 @@ msgstr "å–代全部"
msgid "Selection Only"
msgstr "僅é¸æ“‡å€åŸŸ"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
msgstr "縮å°"
-#: editor/code_editor.cpp editor/plugins/tile_set_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Reset Zoom"
msgstr "é‡è¨­ç¸®æ”¾å¤§å°"
@@ -561,9 +566,8 @@ msgid "Warnings:"
msgstr ""
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Zoom:"
-msgstr "放大"
+msgid "Font Size:"
+msgstr ""
#: editor/code_editor.cpp
msgid "Line:"
@@ -726,8 +730,8 @@ msgid "Recent:"
msgstr "最近存å–:"
#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search:"
msgstr "æœå°‹:"
@@ -778,8 +782,7 @@ msgid "Resource"
msgstr "資æº"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: editor/script_create_dialog.cpp
+#: editor/project_settings_editor.cpp editor/script_create_dialog.cpp
msgid "Path"
msgstr "路徑"
@@ -1254,8 +1257,7 @@ msgid "Node Name:"
msgstr "節點å稱:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "å稱"
@@ -1743,6 +1745,12 @@ msgstr "æ­¤æ“作無法復原, 確定è¦é‚„原嗎?"
#: editor/editor_node.cpp
msgid ""
+"This scene can't be saved because there is a cyclic instancing inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2151,7 +2159,7 @@ msgid "Undo"
msgstr "復原"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
msgstr "å–消「復原ã€"
@@ -2176,7 +2184,7 @@ msgstr "專案設定"
msgid "Export"
msgstr "輸出"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "工具"
@@ -2591,6 +2599,12 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
+"The selected resource (%s) does not match the type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_properties.cpp
+msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -2607,8 +2621,7 @@ msgstr ""
msgid "Pick a Viewport"
msgstr ""
-#: editor/editor_properties.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_editor.cpp
+#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -3045,7 +3058,7 @@ msgstr "複製動畫關éµç•«æ ¼"
msgid "Move To..."
msgstr ""
-#: editor/filesystem_dock.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "New Script..."
msgstr "新增資料夾..."
@@ -3184,7 +3197,7 @@ msgstr "Autoload「%sã€å·²ç¶“存在!"
#: editor/groups_editor.cpp
#, fuzzy
-msgid "invalid Group name."
+msgid "Invalid group name."
msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。"
#: editor/groups_editor.cpp editor/node_dock.cpp
@@ -3437,46 +3450,48 @@ msgid "Activate now?"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Create Polygon"
+msgstr "新增資料夾"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
+#, fuzzy
+msgid "Edit Polygon"
+msgstr "新增資料夾"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Insert Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
+msgid "Edit Polygon (Remove Point)"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Poly And Point"
-msgstr ""
+#, fuzzy
+msgid "Remove Polygon And Point"
+msgstr "移除"
#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Create a new polygon from scratch"
-msgstr ""
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
+msgid "Create points."
+msgstr "刪除"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
+"Edit points.\n"
+"LMB: Move Point\n"
+"RMB: Erase Point"
msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
#, fuzzy
-msgid "Delete points"
-msgstr "刪除"
+msgid "Erase points."
+msgstr "所有的é¸æ“‡"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -3521,17 +3536,6 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Create points."
-msgstr "刪除"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#, fuzzy
-msgid "Erase points."
-msgstr "所有的é¸æ“‡"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
msgstr ""
@@ -3610,7 +3614,6 @@ msgid ""
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node.."
msgstr ""
@@ -4160,7 +4163,7 @@ msgstr "全部"
msgid "Plugins"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
msgstr "排åº:"
@@ -4311,21 +4314,19 @@ msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom out"
-msgstr "縮å°"
+msgid ""
+"Warning: Children of a container get their position and size determined only "
+"by their parent."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
-msgid "Zoom reset"
+msgid "Zoom Reset"
msgstr "縮å°"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Zoom in"
-msgstr "放大"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
msgstr ""
@@ -4581,7 +4582,16 @@ msgid ""
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Poly3D"
+#, fuzzy
+msgid "Create Polygon3D"
+msgstr "新增資料夾"
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -4687,35 +4697,9 @@ msgid "Item List Editor"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid ""
-"No OccluderPolygon2D resource on this node.\n"
-"Create and assign one?"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr ""
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Edit existing polygon:"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "LMB: Move Point."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Ctrl+LMB: Split Segment."
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
msgstr ""
@@ -5086,6 +5070,11 @@ msgid "Add Point to Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Split Curve"
+msgstr "編輯節點曲線"
+
+#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Point in Curve"
msgstr ""
@@ -5113,6 +5102,10 @@ msgid "Click: Add Point"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Left Click: Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
msgstr ""
@@ -5128,11 +5121,6 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
msgstr ""
@@ -5192,6 +5180,10 @@ msgstr ""
msgid "Remove In-Control Point"
msgstr ""
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
#: editor/plugins/physical_bone_plugin.cpp
#, fuzzy
msgid "Move joint"
@@ -5203,7 +5195,13 @@ msgid ""
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync bones"
+msgid "Sync Bones"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid ""
+"No texture in this polygon.\n"
+"Set a texture to be able to edit UV."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5246,7 +5244,16 @@ msgid "Transform UV Map"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint bone weights"
+#, fuzzy
+msgid "Transform Polygon"
+msgstr "新增資料夾"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Paint Bone Weights"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Open Polygon 2D UV editor."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5271,12 +5278,8 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
-msgid "Create Polygon"
-msgstr "新增資料夾"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Point"
-msgstr ""
+msgid "Move Points"
+msgstr "移除"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -5303,19 +5306,19 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Connect two points to make a split"
+msgid "Connect two points to make a split."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Select a split to erase it"
+msgid "Select a split to erase it."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity"
+msgid "Paint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "UnPaint weights with specified intensity"
+msgid "Unpaint weights with specified intensity."
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -5460,20 +5463,24 @@ msgid "Error saving file!"
msgstr "儲存資æºéŒ¯èª¤!"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
+#, fuzzy
+msgid "Error while saving theme."
+msgstr "儲存中發生了錯誤。"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
+#, fuzzy
+msgid "Error Saving"
+msgstr "載入時發生錯誤:"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme"
-msgstr ""
+#, fuzzy
+msgid "Error importing theme."
+msgstr "讀å–字體錯誤。"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing"
-msgstr ""
+#, fuzzy
+msgid "Error Importing"
+msgstr "載入時發生錯誤:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -5495,6 +5502,14 @@ msgid "Import Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As..."
msgstr ""
@@ -5537,8 +5552,8 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid "New TextFile"
-msgstr "éŽæ¿¾æª”案..."
+msgid "Open..."
+msgstr "é–‹å•Ÿ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -5567,15 +5582,16 @@ msgid "Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
+#, fuzzy
+msgid "Import Theme..."
+msgstr "我知é“了"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
+msgid "Reload Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As"
+msgid "Save Theme"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -5686,6 +5702,10 @@ msgstr ""
msgid "Go to Function"
msgstr "建立函å¼"
+#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
+msgid "Standard"
+msgstr ""
+
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
msgstr ""
@@ -5719,10 +5739,6 @@ msgstr ""
msgid "Syntax Highlighter"
msgstr ""
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
@@ -6433,11 +6449,16 @@ msgid "Set Region Rect"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Margin"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "<None>"
+#: scene/resources/visual_shader.cpp
+msgid "None"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -6681,12 +6702,12 @@ msgid "Clear transform"
msgstr "動畫更改座標"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet"
+msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
-msgid "Remove current Texture from TileSet"
+msgid "Remove selected Texture from TileSet."
msgstr "移除"
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6698,13 +6719,34 @@ msgid "Merge from Scene"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings."
+msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display tile's names (hold Alt Key)"
+#, fuzzy
+msgid "Paste bitmask."
+msgstr "貼上åƒæ•¸"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Erase bitmask."
+msgstr "所有的é¸æ“‡"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Create a new polygon."
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Keep polygon inside region Rect."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Enable snap and show grid (configurable via the Inspector)."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Display Tile Names (Hold Alt Key)"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
@@ -6734,16 +6776,27 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete selected Rect."
+msgstr "確定刪除所é¸æ“‡çš„檔案嗎?"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid ""
-"LMB: set bit on.\n"
-"RMB: set bit off.\n"
+"Select current edited sub-tile.\n"
"Click on another Tile to edit it."
-msgstr ""
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Delete polygon."
+msgstr "刪除"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid ""
-"Select current edited sub-tile.\n"
+"LMB: Set bit on.\n"
+"RMB: Set bit off.\n"
"Click on another Tile to edit it."
msgstr "新增資料夾"
@@ -6762,11 +6815,18 @@ msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
+msgid ""
+"Select sub-tile to change its z index.\n"
+"Click on another Tile to edit it."
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "This property can't be changed."
msgstr "æ­¤æ“作無法在沒有根節點的情æ³ä¸‹é€²è¡Œã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Set"
+msgid "TileSet"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -6783,6 +6843,10 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
+msgid "Add Node..."
+msgstr ""
+
+#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr ""
@@ -6821,7 +6885,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Export Path:"
+msgid "Export Path"
msgstr "輸出"
#: editor/project_export.cpp
@@ -8319,7 +8383,8 @@ msgid "GDNative"
msgstr ""
#: modules/gdscript/gdscript_functions.cpp
-msgid "step argument is zero!"
+#, fuzzy
+msgid "Step argument is zero!"
msgstr "step引數為0!"
#: modules/gdscript/gdscript_functions.cpp
@@ -9200,7 +9265,7 @@ msgid ""
msgstr ""
#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has not been assigned."
+msgid "Nothing is visible because no mesh has been assigned."
msgstr ""
#: scene/3d/cpu_particles.cpp
@@ -9243,7 +9308,9 @@ msgid "OrientedPathFollow only works when set as a child of a Path node."
msgstr ""
#: scene/3d/path.cpp
-msgid "OrientedPathFollow requires up vectors enabled in its parent Path."
+msgid ""
+"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve "
+"resource."
msgstr ""
#: scene/3d/physics_body.cpp
@@ -9335,6 +9402,10 @@ msgstr ""
msgid "AnimationPlayer root is not a valid node."
msgstr ""
+#: scene/animation/animation_tree_player.cpp
+msgid "This node has been deprecated. Use AnimationTree instead."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -9351,6 +9422,10 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "請確èª..."
+#: scene/gui/graph_edit.cpp
+msgid "Enable snap and show grid."
+msgstr ""
+
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -9409,10 +9484,6 @@ msgstr "無效的字體大å°ã€‚"
msgid "Input"
msgstr ""
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Invalid source for shader."
@@ -9430,6 +9501,22 @@ msgstr ""
msgid "Varyings can only be assigned in vertex function."
msgstr ""
+#, fuzzy
+#~ msgid "Zoom out"
+#~ msgstr "縮å°"
+
+#, fuzzy
+#~ msgid "Zoom in"
+#~ msgstr "放大"
+
+#, fuzzy
+#~ msgid "New TextFile"
+#~ msgstr "éŽæ¿¾æª”案..."
+
+#, fuzzy
+#~ msgid "Zoom:"
+#~ msgstr "放大"
+
#~ msgid "Class List:"
#~ msgstr "Class 列表:"
@@ -9498,9 +9585,6 @@ msgstr ""
#~ msgid "Anim Track Change Wrap Mode"
#~ msgstr "動畫軌é“更改環繞模å¼"
-#~ msgid "Edit Node Curve"
-#~ msgstr "編輯節點曲線"
-
#~ msgid "Edit Selection Curve"
#~ msgstr "編輯所é¸æ›²ç·š"
@@ -9562,9 +9646,6 @@ msgstr ""
#~ msgid "Thanks!"
#~ msgstr "è¬è¬!"
-#~ msgid "I see..."
-#~ msgstr "我知é“了"
-
#~ msgid "Can't open '%s'."
#~ msgstr "無法開啟 \"%s\"。"
diff --git a/main/main.cpp b/main/main.cpp
index db23a6c214..7383294167 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1697,12 +1697,17 @@ bool Main::start() {
#ifdef TOOLS_ENABLED
if (editor) {
- Error serr = editor_node->load_scene(local_game_path);
- if (serr != OK)
- ERR_PRINT("Failed to load scene");
+ if (game_path != GLOBAL_GET("application/run/main_scene") || !editor_node->has_scenes_in_session()) {
+ Error serr = editor_node->load_scene(local_game_path);
+ if (serr != OK)
+ ERR_PRINT("Failed to load scene");
+ }
OS::get_singleton()->set_context(OS::CONTEXT_EDITOR);
}
#endif
+ if (!editor) {
+ OS::get_singleton()->set_context(OS::CONTEXT_ENGINE);
+ }
}
if (!project_manager && !editor) { // game
diff --git a/main/tests/test_io.cpp b/main/tests/test_io.cpp
deleted file mode 100644
index 4e43ee6a54..0000000000
--- a/main/tests/test_io.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*************************************************************************/
-/* test_io.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "test_io.h"
-
-#ifdef MINIZIP_ENABLED
-
-#include "core/io/resource_loader.h"
-#include "core/io/resource_saver.h"
-#include "core/os/dir_access.h"
-#include "core/os/main_loop.h"
-#include "core/os/os.h"
-#include "core/print_string.h"
-#include "core/project_settings.h"
-#include "scene/resources/texture.h"
-
-#include "core/io/file_access_memory.h"
-
-namespace TestIO {
-
-class TestMainLoop : public MainLoop {
-
- bool quit;
-
-public:
- virtual void input_event(const Ref<InputEvent> &p_event) {
- }
- virtual bool idle(float p_time) {
- return false;
- }
-
- virtual void request_quit() {
-
- quit = true;
- }
- virtual void init() {
-
- quit = true;
- }
- virtual bool iteration(float p_time) {
-
- return quit;
- }
- virtual void finish() {
- }
-};
-
-MainLoop *test() {
-
- print_line("this is test io");
- DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
- da->change_dir(".");
- print_line("Opening current dir " + da->get_current_dir());
- String entry;
- da->list_dir_begin();
- while ((entry = da->get_next()) != "") {
-
- print_line("entry " + entry + " is dir: " + Variant(da->current_is_dir()));
- };
- da->list_dir_end();
-
- RES texture = ResourceLoader::load("test_data/rock.png");
- ERR_FAIL_COND_V(texture.is_null(), NULL);
-
- ResourceSaver::save("test_data/rock.xml", texture);
-
- print_line("localize paths");
- print_line(ProjectSettings::get_singleton()->localize_path("algo.xml"));
- print_line(ProjectSettings::get_singleton()->localize_path("c:\\windows\\algo.xml"));
- print_line(ProjectSettings::get_singleton()->localize_path(ProjectSettings::get_singleton()->get_resource_path() + "/something/something.xml"));
- print_line(ProjectSettings::get_singleton()->localize_path("somedir/algo.xml"));
-
- {
-
- FileAccess *z = FileAccess::open("test_data/archive.zip", FileAccess::READ);
- int len = z->get_len();
- Vector<uint8_t> zip;
- zip.resize(len);
- z->get_buffer(zip.ptrw(), len);
- z->close();
- memdelete(z);
-
- FileAccessMemory::register_file("a_package", zip);
- FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_RESOURCES);
- FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_FILESYSTEM);
- FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_USERDATA);
-
- print_line("archive test");
- };
-
- print_line("test done");
-
- return memnew(TestMainLoop);
-}
-} // namespace TestIO
-
-#else
-
-namespace TestIO {
-
-MainLoop *test() {
-
- return NULL;
-}
-} // namespace TestIO
-#endif
diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp
index 714a254371..a36b619ba0 100644
--- a/main/tests/test_main.cpp
+++ b/main/tests/test_main.cpp
@@ -37,7 +37,6 @@
#include "test_gdscript.h"
#include "test_gui.h"
#include "test_image.h"
-#include "test_io.h"
#include "test_math.h"
#include "test_oa_hash_map.h"
#include "test_ordered_hash_map.h"
@@ -57,7 +56,6 @@ const char **tests_get_names() {
"render",
"oa_hash_map",
"gui",
- "io",
"shaderlang",
"gd_tokenizer",
"gd_parser",
@@ -111,11 +109,6 @@ MainLoop *test_main(String p_test, const List<String> &p_args) {
}
#endif
- if (p_test == "io") {
-
- return TestIO::test();
- }
-
if (p_test == "shaderlang") {
return TestShaderLang::test();
diff --git a/main/tests/test_shader_lang.cpp b/main/tests/test_shader_lang.cpp
index 9df5973376..357143e499 100644
--- a/main/tests/test_shader_lang.cpp
+++ b/main/tests/test_shader_lang.cpp
@@ -180,7 +180,7 @@ static String dump_node_code(SL::Node *p_node, int p_level) {
String scode = dump_node_code(bnode->statements[i], p_level);
- if (bnode->statements[i]->type == SL::Node::TYPE_CONTROL_FLOW || bnode->statements[i]->type == SL::Node::TYPE_CONTROL_FLOW) {
+ if (bnode->statements[i]->type == SL::Node::TYPE_CONTROL_FLOW) {
code += scode; //use directly
} else {
code += _mktab(p_level) + scode + ";\n";
diff --git a/methods.py b/methods.py
index 5fcbc94298..f8fc6c64ef 100644
--- a/methods.py
+++ b/methods.py
@@ -6,7 +6,7 @@ import glob
import string
import datetime
import subprocess
-from compat import iteritems, isbasestring
+from compat import iteritems, isbasestring, decode_utf8
def add_source_files(self, sources, filetype, lib_env=None, shared=False):
@@ -645,7 +645,7 @@ def detect_darwin_sdk_path(platform, env):
if not env[var_name]:
try:
- sdk_path = subprocess.check_output(['xcrun', '--sdk', sdk_name, '--show-sdk-path']).strip()
+ sdk_path = decode_utf8(subprocess.check_output(['xcrun', '--sdk', sdk_name, '--show-sdk-path']).strip())
if sdk_path:
env[var_name] = sdk_path
except (subprocess.CalledProcessError, OSError) as e:
diff --git a/misc/dist/document_icon.svg b/misc/dist/document_icon.svg
deleted file mode 100644
index 2652110fa5..0000000000
--- a/misc/dist/document_icon.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024">
-<path d="M159.143 69.856v884.288h705.714v-665.51L646.08 69.856z" fill="#fff" stroke="#d2d2d2" stroke-width="20"/>
-<g stroke-width=".32">
- <path d="M723.128 594.284s-.701-4.304-1.111-4.265l-78.083 7.534a12.691 12.691 0 0 0-11.474 11.78l-2.145 30.747-60.408 4.31-4.11-27.866c-.914-6.198-6.326-10.87-12.591-10.87h-82.412c-6.263 0-11.675 4.672-12.59 10.87l-4.111 27.865-60.408-4.31-2.145-30.745a12.692 12.692 0 0 0-11.475-11.783l-78.12-7.532c-.404-.039-.7 4.269-1.104 4.269l-.105 16.897 66.161 10.67 2.167 31.02c.438 6.28 5.505 11.357 11.79 11.808l83.194 5.935c.315.022.626.035.937.035 6.252 0 11.655-4.675 12.57-10.873l4.228-28.671h60.436l4.228 28.671c.913 6.196 6.323 10.87 12.583 10.87.307 0 .613-.01.913-.032l83.206-5.935c6.282-.45 11.351-5.528 11.79-11.808l2.164-31.02 66.133-10.717z" fill="#fff"/>
- <path d="M300.84 466.87v127.413c.233.003.466.011.697.033l78.113 7.531a8.41 8.41 0 0 1 7.583 7.789l2.409 34.481 68.138 4.862 4.694-31.825a8.41 8.41 0 0 1 8.321-7.184h82.412a8.41 8.41 0 0 1 8.32 7.184l4.693 31.825 68.14-4.862 2.407-34.481a8.414 8.414 0 0 1 7.583-7.789l78.082-7.531c.231-.022.462-.03.695-.033v-10.166l.033-.01V466.87h.289c10.348-13.207 19.923-27.124 29.105-41.972-12.195-20.76-27.137-39.313-43.109-56.502-14.813 7.456-29.2 15.903-42.79 24.891-6.8-6.759-14.458-12.288-21.981-18.067-7.392-5.937-15.722-10.29-23.622-15.361 2.352-17.517 3.515-34.762 3.983-52.76-20.385-10.26-42.123-17.062-64.111-21.947-8.779 14.754-16.807 30.732-23.799 46.352-8.291-1.385-16.621-1.899-24.962-1.998v-.013c-.058 0-.112.013-.162.013-.052 0-.106-.013-.157-.013v.013c-8.356.1-16.68.613-24.973 1.998-6.988-15.62-15.012-31.598-23.804-46.352-21.977 4.885-43.717 11.688-64.1 21.947.466 17.998 1.63 35.243 3.988 52.76-7.916 5.071-16.235 9.424-23.629 15.36-7.512 5.78-15.184 11.31-21.986 18.068-13.589-8.988-27.972-17.435-42.79-24.89-15.971 17.188-30.905 35.74-43.104 56.501 9.178 14.848 18.76 28.765 29.105 41.972z" fill="#478cbf"/>
- <path d="M653.052 617.91l-2.42 34.664a8.413 8.413 0 0 1-7.792 7.803l-83.204 5.937a8.412 8.412 0 0 1-8.92-7.165l-4.77-32.357h-67.89l-4.772 32.358c-.64 4.354-4.534 7.486-8.92 7.164l-83.203-5.937a8.413 8.413 0 0 1-7.792-7.803l-2.42-34.665-70.238-6.772c.033 7.55.13 15.819.13 17.465 0 74.181 94.102 109.836 211.016 110.246h.287c116.915-.41 210.984-36.065 210.984-110.246 0-1.676.101-9.912.136-17.465z" fill="#478cbf"/>
- <path d="M448.344 518.591c0 26.01-21.074 47.078-47.074 47.078-25.987 0-47.067-21.069-47.067-47.078 0-25.991 21.08-47.05 47.067-47.05 26 0 47.074 21.059 47.074 47.05" fill="#fff"/>
- <path d="M437.017 521.384c0 17.251-13.982 31.233-31.246 31.233-17.256 0-31.247-13.982-31.247-31.233 0-17.252 13.99-31.247 31.247-31.247 17.264 0 31.246 13.995 31.246 31.247" fill="#414042"/>
- <path d="M511.997 569.952c-8.37 0-15.152-6.168-15.152-13.77v-43.336c0-7.596 6.783-13.77 15.152-13.77 8.368 0 15.166 6.174 15.166 13.77v43.336c0 7.602-6.798 13.77-15.166 13.77M575.657 518.591c0 26.01 21.074 47.078 47.078 47.078 25.985 0 47.063-21.069 47.063-47.078 0-25.991-21.078-47.05-47.063-47.05-26.004 0-47.078 21.059-47.078 47.05" fill="#fff"/>
- <path d="M586.987 521.384c0 17.251 13.978 31.233 31.23 31.233 17.268 0 31.245-13.982 31.245-31.233 0-17.252-13.977-31.247-31.246-31.247-17.251 0-31.23 13.995-31.23 31.247" fill="#414042"/>
-</g>
-</svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/gdscript.svg b/misc/dist/document_icons/gdscript.svg
new file mode 100644
index 0000000000..ec65eb098a
--- /dev/null
+++ b/misc/dist/document_icons/gdscript.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"><path d="M812.681 293.783c-23.575-32.543-141.93-39.865-197.505-34.983 2.17-68.048 31.457-117.656-37.966-177.026M161.89 49.151H464c77.128-2.02 126.554 37.835 178.444 84.881l123.665 109.83c63.819 56.94 89.13 110.625 96 188.174v542.886H161.89z" fill="#eff1f5" stroke="#9f9fa1" stroke-width="19.603" stroke-linecap="round" stroke-linejoin="round"/><text style="line-height:1.25;-inkscape-font-specification:'Montserrat Ultra-Bold'" x="207.666" y="878.644" font-weight="800" font-size="16" font-family="Montserrat" letter-spacing="0" word-spacing="0" fill="#333f67"><tspan x="207.666" y="878.644" font-size="112">GDSCRIPT</tspan></text><path d="M481.818 300.713l-17.037 68.149a150.92 150.92 0 0 0-20.81 8.43l-60.015-36.021-42.683 42.683 36.079 60.19a150.92 150.92 0 0 0-8.608 20.693l-68.031 16.978v60.368l68.149 17.037a150.92 150.92 0 0 0 8.43 20.752l-36.021 60.072 42.683 42.683 60.19-36.079a150.92 150.92 0 0 0 20.693 8.608l16.978 68.031h60.368l17.037-68.149a150.92 150.92 0 0 0 20.752-8.43l60.072 36.021 42.683-42.683-36.079-60.19a150.92 150.92 0 0 0 8.608-20.693l68.031-16.978v-60.368l-68.149-17.037a150.92 150.92 0 0 0-8.43-20.752l36.021-60.072-42.683-42.683-60.19 36.079a150.92 150.92 0 0 0-20.693-8.608l-16.978-68.031h-60.368zm30.184 150.92A60.368 60.368 0 0 1 572.37 512a60.368 60.368 0 0 1-60.368 60.368A60.368 60.368 0 0 1 451.634 512a60.368 60.368 0 0 1 60.368-60.368z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/gdscript_extra_small.svg b/misc/dist/document_icons/gdscript_extra_small.svg
new file mode 100644
index 0000000000..1c3545ef9d
--- /dev/null
+++ b/misc/dist/document_icons/gdscript_extra_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M12.698 4.59c-.368-.508-2.218-.623-3.086-.546.034-1.064.492-1.839-.593-2.766m-6.49-.51H7.25c1.205-.032 1.977.591 2.788 1.326L11.97 3.81c.998.89 1.393 1.729 1.5 2.94v8.483H2.53z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path d="M7.39 4.721l-.346 1.38a3.056 3.056 0 0 0-.421.171l-1.216-.73-.864.865.73 1.219a3.056 3.056 0 0 0-.174.419l-1.377.344V9.61l1.38.345a3.056 3.056 0 0 0 .17.42l-.729 1.217.864.864 1.22-.73a3.056 3.056 0 0 0 .418.174l.344 1.377h1.222l.345-1.38a3.056 3.056 0 0 0 .42-.17l1.217.73.864-.865-.73-1.219a3.056 3.056 0 0 0 .174-.42l1.378-.343V8.39l-1.38-.345a3.056 3.056 0 0 0-.17-.42l.729-1.217-.865-.864-1.219.73a3.056 3.056 0 0 0-.419-.174L8.611 4.72H7.39zM8 7.777A1.222 1.222 0 0 1 9.223 9 1.222 1.222 0 0 1 8 10.222 1.222 1.222 0 0 1 6.778 9 1.222 1.222 0 0 1 8 7.777z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/gdscript_small.svg b/misc/dist/document_icons/gdscript_small.svg
new file mode 100644
index 0000000000..468f4243a2
--- /dev/null
+++ b/misc/dist/document_icons/gdscript_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M25.396 9.18c-.736-1.016-4.435-1.245-6.172-1.093.068-2.126.983-3.676-1.186-5.532M5.059 1.536H14.5c2.41-.063 3.955 1.182 5.576 2.652l3.865 3.433c1.994 1.779 2.785 3.457 3 5.88v16.965H5.059z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path d="M15.057 11.397l-.532 2.13a4.716 4.716 0 0 0-.65.263l-1.876-1.126-1.334 1.334 1.128 1.881a4.716 4.716 0 0 0-.27.647l-2.125.53v1.887l2.13.532a4.716 4.716 0 0 0 .263.649L10.665 22 12 23.335l1.881-1.127a4.716 4.716 0 0 0 .647.269l.53 2.125h1.887l.532-2.13a4.716 4.716 0 0 0 .649-.263l1.877 1.126 1.334-1.334-1.128-1.88a4.716 4.716 0 0 0 .27-.647l2.125-.531v-1.886l-2.13-.533a4.716 4.716 0 0 0-.263-.648l1.126-1.878-1.334-1.333-1.881 1.127a4.716 4.716 0 0 0-.647-.269l-.53-2.126h-1.887zm.944 4.716A1.887 1.887 0 0 1 17.887 18a1.887 1.887 0 0 1-1.886 1.886A1.887 1.887 0 0 1 14.114 18a1.887 1.887 0 0 1 1.887-1.887z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/project.svg b/misc/dist/document_icons/project.svg
new file mode 100644
index 0000000000..aa9b936f27
--- /dev/null
+++ b/misc/dist/document_icons/project.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"><path d="M812.681 293.783c-23.575-32.542-141.93-39.864-197.505-34.983 2.17-68.048 31.457-117.655-37.966-177.025M161.89 49.15H464c77.128-2.02 126.554 37.836 178.444 84.882l123.665 109.83c63.819 56.94 89.13 110.624 96 188.174v542.885H161.89z" fill="#eff1f5" stroke="#9f9fa1" stroke-width="19.603" stroke-linecap="round" stroke-linejoin="round"/><g stroke-width=".32"><path d="M712.572 590.17s-.666-4.089-1.056-4.052l-74.179 7.157a12.056 12.056 0 0 0-10.9 11.191l-2.038 29.21-57.387 4.094-3.905-26.472c-.868-5.888-6.01-10.327-11.961-10.327h-78.292c-5.95 0-11.09 4.439-11.96 10.327l-3.906 26.472-57.387-4.095-2.038-29.208a12.057 12.057 0 0 0-10.901-11.194l-74.214-7.155c-.384-.037-.665 4.056-1.049 4.056l-.1 16.052 62.853 10.136 2.059 29.47c.416 5.965 5.23 10.788 11.2 11.217l79.035 5.638c.299.021.594.033.89.033 5.94 0 11.072-4.44 11.941-10.329l4.017-27.237h57.414l4.017 27.237c.867 5.886 6.006 10.326 11.953 10.326.292 0 .583-.009.868-.03l79.046-5.638c5.967-.428 10.783-5.252 11.2-11.218l2.056-29.469 62.826-10.18z" fill="#fff"/><path d="M311.398 469.127v121.042c.221.003.443.01.662.031l74.207 7.155a7.99 7.99 0 0 1 7.204 7.4l2.289 32.756 64.731 4.619 4.46-30.234a7.99 7.99 0 0 1 7.904-6.824h78.292a7.99 7.99 0 0 1 7.904 6.824l4.458 30.234 64.733-4.619 2.287-32.757a7.993 7.993 0 0 1 7.203-7.4l74.178-7.154c.22-.02.44-.028.66-.031v-9.658l.032-.01V469.128h.275c9.83-12.547 18.926-25.768 27.65-39.874-11.586-19.722-25.78-37.347-40.954-53.677-14.073 7.083-27.74 15.108-40.65 23.647-6.46-6.421-13.736-11.674-20.883-17.164-7.022-5.64-14.936-9.775-22.44-14.593 2.234-16.641 3.339-33.024 3.783-50.122-19.366-9.747-40.017-16.209-60.905-20.85-8.34 14.017-15.967 29.196-22.61 44.035-7.876-1.316-15.79-1.804-23.713-1.898v-.013c-.055 0-.107.013-.154.013-.05 0-.1-.013-.15-.013v.013c-7.937.095-15.845.582-23.724 1.898-6.638-14.84-14.261-30.018-22.613-44.035-20.879 4.641-41.532 11.104-60.895 20.85.442 17.098 1.548 33.48 3.788 50.122-7.52 4.818-15.423 8.953-22.447 14.592-7.137 5.491-14.425 10.745-20.887 17.165-12.91-8.539-26.573-16.564-40.65-23.646-15.173 16.329-29.36 33.953-40.95 53.676 8.72 14.106 17.823 27.327 27.65 39.874z" fill="#478cbf"/><path d="M646 612.615l-2.3 32.93a7.992 7.992 0 0 1-7.402 7.413l-79.044 5.64a7.991 7.991 0 0 1-8.474-6.806l-4.531-30.74h-64.496l-4.533 30.74c-.608 4.137-4.308 7.112-8.474 6.806l-79.043-5.64a7.992 7.992 0 0 1-7.402-7.413l-2.3-32.931-66.726-6.434c.032 7.173.124 15.028.124 16.592 0 70.472 89.397 104.344 200.465 104.734h.273c111.07-.39 200.435-34.262 200.435-104.734 0-1.592.096-9.416.129-16.592z" fill="#478cbf"/><path d="M451.527 518.261c0 24.71-20.02 44.725-44.72 44.725-24.688 0-44.714-20.016-44.714-44.725 0-24.691 20.026-44.697 44.713-44.697 24.7 0 44.72 20.006 44.72 44.697" fill="#fff"/><path d="M440.766 520.915c0 16.388-13.283 29.671-29.684 29.671-16.393 0-29.684-13.283-29.684-29.671 0-16.39 13.29-29.685 29.684-29.685 16.401 0 29.684 13.295 29.684 29.685" fill="#414042"/><path d="M511.997 567.054c-7.951 0-14.394-5.86-14.394-13.081v-41.17c0-7.216 6.444-13.08 14.394-13.08s14.408 5.864 14.408 13.08v41.17c0 7.222-6.458 13.081-14.408 13.081m60.477-48.793c0 24.71 20.02 44.725 44.724 44.725 24.686 0 44.71-20.016 44.71-44.725 0-24.691-20.024-44.697-44.71-44.697-24.704 0-44.724 20.006-44.724 44.697" fill="#fff"/><path d="M583.238 520.915c0 16.388 13.279 29.671 29.668 29.671 16.405 0 29.683-13.283 29.683-29.671 0-16.39-13.278-29.685-29.684-29.685-16.388 0-29.668 13.295-29.668 29.685" fill="#414042"/></g><text style="line-height:1.25;-inkscape-font-specification:'Montserrat Ultra-Bold'" x="234.416" y="878.644" font-weight="800" font-size="16" font-family="Montserrat" letter-spacing="0" word-spacing="0" fill="#333f67"><tspan x="234.416" y="878.644" font-size="112">PROJECT</tspan></text></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/project_extra_small.svg b/misc/dist/document_icons/project_extra_small.svg
new file mode 100644
index 0000000000..5482d27033
--- /dev/null
+++ b/misc/dist/document_icons/project_extra_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M12.698 4.59c-.368-.508-2.218-.623-3.086-.546.034-1.064.492-1.839-.593-2.766m-6.49-.51H7.25c1.205-.032 1.977.591 2.788 1.326L11.97 3.81c.998.89 1.393 1.729 1.5 2.94v8.483H2.53z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><g stroke-width=".32"><path d="M12.062 10.583s-.014-.083-.022-.082l-1.502.145a.244.244 0 0 0-.22.226l-.042.592-1.162.083-.079-.536a.246.246 0 0 0-.242-.21H7.208c-.12 0-.225.09-.243.21l-.079.536-1.162-.083-.041-.592a.244.244 0 0 0-.22-.226L3.958 10.5c-.007-.001-.013.082-.02.082l-.003.325 1.273.205.042.597c.008.12.105.218.226.227l1.6.114h.019c.12 0 .224-.089.242-.208l.081-.552h1.163l.08.552a.246.246 0 0 0 .26.208l1.601-.114a.246.246 0 0 0 .227-.227l.042-.597 1.272-.206z" fill="#fff"/><path d="M3.938 8.132v2.45l.013.001 1.503.145a.162.162 0 0 1 .146.15l.046.663 1.311.094.09-.612a.162.162 0 0 1 .16-.138h1.586a.162.162 0 0 1 .16.138l.09.612 1.311-.094.046-.663a.162.162 0 0 1 .146-.15l1.502-.145h.014V8.132h.006c.2-.254.383-.522.56-.808a6.285 6.285 0 0 0-.83-1.087 8.105 8.105 0 0 0-.823.48c-.13-.13-.278-.237-.422-.348-.143-.115-.303-.198-.455-.296a9.38 9.38 0 0 0 .077-1.015 5.275 5.275 0 0 0-1.234-.422 8.781 8.781 0 0 0-.457.892 3.13 3.13 0 0 0-.48-.039H8h-.003c-.16.002-.32.012-.48.039a8.71 8.71 0 0 0-.458-.892 5.276 5.276 0 0 0-1.233.422c.009.346.031.678.076 1.015-.152.098-.312.181-.454.296-.145.11-.292.217-.423.347a8.093 8.093 0 0 0-.823-.479c-.307.331-.595.688-.83 1.087.177.286.361.554.56.808z" fill="#478cbf"/><path d="M10.714 11.037l-.047.667a.162.162 0 0 1-.15.15l-1.6.114a.162.162 0 0 1-.172-.137l-.092-.623H7.347l-.092.623a.162.162 0 0 1-.171.137l-1.6-.114a.162.162 0 0 1-.15-.15l-.047-.667-1.351-.13.002.336c0 1.427 1.81 2.113 4.06 2.12h.005c2.25-.007 4.059-.693 4.059-2.12l.002-.336z" fill="#478cbf"/><path d="M6.776 9.127a.905.905 0 1 1-1.811 0 .905.905 0 0 1 1.81 0" fill="#fff"/><path d="M6.558 9.18a.6.6 0 1 1-1.202 0 .6.6 0 0 1 1.202 0" fill="#414042"/><path d="M8 10.115c-.16 0-.291-.119-.291-.265v-.834c0-.146.13-.265.291-.265.161 0 .292.119.292.265v.834c0 .146-.13.265-.292.265m1.225-.988a.906.906 0 1 0 1.81 0 .906.906 0 0 0-1.81 0" fill="#fff"/><path d="M9.443 9.18a.6.6 0 1 0 1.201 0 .6.6 0 0 0-1.201 0" fill="#414042"/></g></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/project_small.svg b/misc/dist/document_icons/project_small.svg
new file mode 100644
index 0000000000..76f501b80d
--- /dev/null
+++ b/misc/dist/document_icons/project_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M25.396 9.18c-.736-1.016-4.435-1.245-6.172-1.093.068-2.126.983-3.676-1.186-5.532M5.059 1.536H14.5c2.41-.063 3.955 1.182 5.576 2.652l3.865 3.433c1.994 1.779 2.785 3.457 3 5.88v16.965H5.059z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><g stroke-width=".32"><path d="M22.268 20.443s-.02-.128-.033-.127l-2.318.224a.377.377 0 0 0-.34.35l-.064.912-1.793.128-.122-.827a.38.38 0 0 0-.374-.323h-2.447a.38.38 0 0 0-.374.323l-.122.827-1.793-.128-.064-.913a.377.377 0 0 0-.34-.35l-2.32-.223c-.011-.001-.02.127-.032.127l-.003.501 1.964.317.064.921a.38.38 0 0 0 .35.35l2.47.177h.028a.38.38 0 0 0 .373-.322l.125-.851h1.795l.125.851a.38.38 0 0 0 .4.322l2.471-.176a.38.38 0 0 0 .35-.351l.064-.92 1.964-.32z" fill="#fff"/><path d="M9.732 16.66v3.783h.02l2.32.224a.25.25 0 0 1 .224.231l.072 1.024 2.023.144.14-.945a.25.25 0 0 1 .246-.213h2.447a.25.25 0 0 1 .247.213l.14.945 2.022-.144.072-1.024a.25.25 0 0 1 .225-.23l2.318-.225h.02v-.302h.001V16.66h.009c.307-.392.591-.805.864-1.246a9.7 9.7 0 0 0-1.28-1.677c-.44.22-.867.472-1.27.738-.202-.2-.43-.364-.653-.536-.22-.176-.466-.305-.701-.456.07-.52.104-1.032.118-1.566a8.14 8.14 0 0 0-1.903-.652c-.26.438-.499.913-.707 1.376a4.832 4.832 0 0 0-.74-.059h-.01a4.837 4.837 0 0 0-.742.06 13.44 13.44 0 0 0-.706-1.377 8.142 8.142 0 0 0-1.903.652c.014.534.048 1.046.118 1.566-.235.15-.482.28-.701.456-.223.172-.451.336-.653.536-.403-.266-.83-.517-1.27-.738a9.704 9.704 0 0 0-1.28 1.677c.273.44.557.854.864 1.246z" fill="#478cbf"/><path d="M20.188 21.144l-.072 1.029a.25.25 0 0 1-.231.232l-2.47.176a.25.25 0 0 1-.265-.213l-.142-.96h-2.015l-.142.96a.25.25 0 0 1-.265.213l-2.47-.176a.25.25 0 0 1-.231-.232l-.072-1.03-2.085-.2c0 .224.004.47.004.518 0 2.203 2.793 3.261 6.264 3.273h.009c3.47-.012 6.263-1.07 6.263-3.273l.004-.518z" fill="#478cbf"/><path d="M14.11 18.195a1.397 1.397 0 1 1-2.794.001 1.397 1.397 0 0 1 2.795 0" fill="#fff"/><path d="M13.774 18.278a.927.927 0 1 1-1.854 0 .927.927 0 0 1 1.854 0" fill="#414042"/><path d="M16 19.72c-.248 0-.45-.183-.45-.409v-1.286c0-.226.202-.409.45-.409.249 0 .45.183.45.409v1.286c0 .226-.201.41-.45.41m1.89-1.526a1.397 1.397 0 1 0 2.795 0 1.397 1.397 0 0 0-2.795 0" fill="#fff"/><path d="M18.227 18.278a.927.927 0 1 0 1.854 0 .927.927 0 0 0-1.854 0" fill="#414042"/></g></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/resource.svg b/misc/dist/document_icons/resource.svg
new file mode 100644
index 0000000000..2555e8f5c0
--- /dev/null
+++ b/misc/dist/document_icons/resource.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"><path d="M812.681 293.783c-23.575-32.543-141.93-39.865-197.505-34.983 2.17-68.048 31.457-117.656-37.966-177.026M161.89 49.151H464c77.128-2.02 126.554 37.835 178.444 84.881l123.665 109.83c63.819 56.94 89.13 110.625 96 188.174v542.886H161.89z" fill="#eff1f5" stroke="#9f9fa1" stroke-width="19.603" stroke-linecap="round" stroke-linejoin="round"/><text style="line-height:1.25;-inkscape-font-specification:'Montserrat Ultra-Bold'" x="183.282" y="878.644" font-weight="800" font-size="16" letter-spacing="0" word-spacing="0" font-family="Montserrat" fill="#333f67"><tspan x="183.282" y="878.644" font-size="112">RESOURCE</tspan></text><path style="text-indent:0;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;isolation:auto;mix-blend-mode:normal" d="M510.825 290.281a31.683 31.683 0 0 0-12.994 3.28L307.75 388.6a31.683 31.683 0 0 0-17.51 28.339v190.08a31.683 31.683 0 0 0 17.51 28.338l190.08 95.04a31.683 31.683 0 0 0 28.338 0l190.08-95.04a31.683 31.683 0 0 0 17.51-28.338V416.94a31.683 31.683 0 0 0-17.51-28.34l-190.08-95.04a31.683 31.683 0 0 0-15.345-3.279zM512 357.354l119.234 59.587-43.747 21.904-119.234-59.647L512 357.356zm-158.4 110.88l126.72 63.36v119.234l-126.72-63.36zm316.8 0v119.234l-126.72 63.36V531.594z" color="#000" white-space="normal" fill-rule="evenodd" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/resource_extra_small.svg b/misc/dist/document_icons/resource_extra_small.svg
new file mode 100644
index 0000000000..4ba41b0073
--- /dev/null
+++ b/misc/dist/document_icons/resource_extra_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M12.698 4.59c-.368-.508-2.218-.623-3.086-.546.034-1.064.492-1.839-.593-2.766m-6.49-.51H7.25c1.205-.032 1.977.591 2.788 1.326L11.97 3.81c.998.89 1.393 1.729 1.5 2.94v8.483H2.53z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path style="text-indent:0;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;isolation:auto;mix-blend-mode:normal" d="M7.976 4.51a.642.642 0 0 0-.263.067L3.864 6.5a.642.642 0 0 0-.354.574v3.849a.642.642 0 0 0 .354.574l3.85 1.924a.642.642 0 0 0 .573 0l3.85-1.924a.642.642 0 0 0 .354-.574v-3.85a.642.642 0 0 0-.355-.573L8.287 4.576a.642.642 0 0 0-.31-.066zM8 5.868l2.415 1.207-.886.444L7.114 6.31 8 5.868zM4.793 8.114l2.566 1.283v2.414l-2.566-1.283zm6.415 0v2.414l-2.566 1.283V9.397z" color="#000" white-space="normal" fill="#478cbf" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/resource_small.svg b/misc/dist/document_icons/resource_small.svg
new file mode 100644
index 0000000000..502a4c6c36
--- /dev/null
+++ b/misc/dist/document_icons/resource_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M25.396 9.18c-.736-1.016-4.435-1.245-6.172-1.093.068-2.126.983-3.676-1.186-5.532M5.059 1.536H14.5c2.41-.063 3.955 1.182 5.576 2.652l3.865 3.433c1.994 1.779 2.785 3.457 3 5.88v16.965H5.059z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path style="text-indent:0;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;isolation:auto;mix-blend-mode:normal" d="M15.964 11.071a.99.99 0 0 0-.406.103l-5.94 2.97a.99.99 0 0 0-.547.885v5.94a.99.99 0 0 0 .547.886l5.94 2.97a.99.99 0 0 0 .885 0l5.94-2.97a.99.99 0 0 0 .547-.886v-5.94a.99.99 0 0 0-.547-.885l-5.94-2.97a.99.99 0 0 0-.48-.103zM16 13.167l3.726 1.862-1.367.685-3.727-1.864 1.368-.683zm-4.95 3.465l3.96 1.98v3.726l-3.96-1.98zm9.9 0v3.726l-3.96 1.98v-3.726z" color="#000" white-space="normal" fill="#478cbf" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/scene.svg b/misc/dist/document_icons/scene.svg
new file mode 100644
index 0000000000..a4e1ca809e
--- /dev/null
+++ b/misc/dist/document_icons/scene.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024"><path d="M812.681 293.783c-23.575-32.542-141.93-39.864-197.505-34.983 2.17-68.048 31.457-117.655-37.966-177.025M161.89 49.15H464c77.128-2.02 126.554 37.836 178.444 84.882l123.665 109.83c63.819 56.94 89.13 110.624 96 188.174v542.885H161.89z" fill="#eff1f5" stroke="#9f9fa1" stroke-width="19.603" stroke-linecap="round" stroke-linejoin="round"/><text style="line-height:1.25;-inkscape-font-specification:'Montserrat Ultra-Bold'" x="315.088" y="878.644" font-weight="800" font-size="16" font-family="Montserrat" letter-spacing="0" word-spacing="0" fill="#333f67"><tspan x="315.088" y="878.644" font-size="112">SCENE</tspan></text><path d="M714.504 315.805l-67.735 9.904 24.7 57.361 51.76-7.546zm-127.458 18.57l-59.719 8.725 24.702 57.419 59.719-8.725zm-119.498 17.45l-59.719 8.725 24.701 57.419 59.72-8.725zm-119.438 17.45l-51.76 7.546 8.725 59.719 67.736-9.904zm-43.036 97.449v181.104c0 33.34 27.027 60.368 60.368 60.368H727.65V466.724z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/scene_extra_small.svg b/misc/dist/document_icons/scene_extra_small.svg
new file mode 100644
index 0000000000..155aa843b2
--- /dev/null
+++ b/misc/dist/document_icons/scene_extra_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M12.698 4.59c-.368-.508-2.218-.623-3.086-.546.034-1.064.492-1.839-.593-2.766m-6.49-.51H7.25c1.205-.032 1.977.591 2.788 1.326L11.97 3.81c.998.89 1.393 1.729 1.5 2.94v8.483H2.53z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path d="M12.101 5.027l-1.372.2.5 1.162 1.049-.153zm-2.581.376l-1.21.177.5 1.162 1.21-.176zm-2.42.353l-1.21.177.501 1.163 1.21-.177zm-2.419.354l-1.048.152.177 1.21 1.372-.2zM3.81 8.083v3.667c0 .676.547 1.223 1.222 1.223h7.335v-4.89z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/document_icons/scene_small.svg b/misc/dist/document_icons/scene_small.svg
new file mode 100644
index 0000000000..d36d42f458
--- /dev/null
+++ b/misc/dist/document_icons/scene_small.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M25.396 9.18c-.736-1.016-4.435-1.245-6.172-1.093.068-2.126.983-3.676-1.186-5.532M5.059 1.536H14.5c2.41-.063 3.955 1.182 5.576 2.652l3.865 3.433c1.994 1.779 2.785 3.457 3 5.88v16.965H5.059z" fill="#eff1f5" stroke="#9f9fa1" stroke-linecap="round" stroke-linejoin="round"/><path d="M22.329 11.869l-2.117.31.772 1.792 1.617-.236zm-3.983.58l-1.867.273.772 1.794 1.867-.273zm-3.735.545l-1.866.273.772 1.794 1.866-.272zm-3.732.546l-1.618.235.273 1.867 2.117-.31zm-1.345 3.045v5.66c0 1.041.845 1.886 1.887 1.886H22.74v-7.546z" fill="#478cbf"/></svg> \ No newline at end of file
diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6
index 50cb420e4e..43ca4e9d10 100644
--- a/misc/dist/linux/godot.6
+++ b/misc/dist/linux/godot.6
@@ -149,7 +149,7 @@ Build the scripting solutions (e.g. for C# projects).
Generate JSON dump of the Godot API for GDNative bindings.
.TP
\fB\-\-test\fR <test>
-Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'io', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'image', 'ordered_hash_map').
+Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'image', 'ordered_hash_map').
.SH FILES
XDG_DATA_CONFIG/godot/ or ~/.config/godot/
.RS
diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist
index faa929b818..a001fdf9d2 100755
--- a/misc/dist/osx_tools.app/Contents/Info.plist
+++ b/misc/dist/osx_tools.app/Contents/Info.plist
@@ -72,22 +72,67 @@
<key>UTTypeDescription</key>
<string>Godot Scene</string>
<key>UTTypeIconFile</key>
- <string>Document.icns</string>
+ <string>Scene.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
- <key>com.apple.ostype</key>
- <string>TSCN</string>
<key>public.filename-extension</key>
<array>
<string>scn</string>
<string>tscn</string>
</array>
<key>public.mime-type</key>
- <string>scene/x-scn</string>
+ <string>application/x-godot-scene</string>
+ </dict>
+ </dict>
+ <dict>
+ <key>UTTypeIdentifier</key>
+ <string>public.gd</string>
+ <key>UTTypeReferenceURL</key>
+ <string></string>
+ <key>UTTypeDescription</key>
+ <string>Godot Script</string>
+ <key>UTTypeIconFile</key>
+ <string>GDScript.icns</string>
+ <key>UTTypeConformsTo</key>
+ <array>
+ <string>public.data</string>
+ </array>
+ <key>UTTypeTagSpecification</key>
+ <dict>
+ <key>public.filename-extension</key>
+ <array>
+ <string>gd</string>
+ </array>
+ <key>public.mime-type</key>
+ <string>text/x-gdscript</string>
+ </dict>
+ </dict>
+ <dict>
+ <key>UTTypeIdentifier</key>
+ <string>public.res</string>
+ <key>UTTypeReferenceURL</key>
+ <string></string>
+ <key>UTTypeDescription</key>
+ <string>Godot Resource</string>
+ <key>UTTypeIconFile</key>
+ <string>Resource.icns</string>
+ <key>UTTypeConformsTo</key>
+ <array>
+ <string>public.data</string>
+ </array>
+ <key>UTTypeTagSpecification</key>
+ <dict>
+ <key>public.filename-extension</key>
+ <array>
+ <string>res</string>
+ <string>tres</string>
+ </array>
+ <key>public.mime-type</key>
+ <string>application/x-godot-resource</string>
</dict>
</dict>
<dict>
@@ -98,21 +143,19 @@
<key>UTTypeDescription</key>
<string>Godot Project</string>
<key>UTTypeIconFile</key>
- <string>Document.icns</string>
+ <string>Project.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
- <key>com.apple.ostype</key>
- <string>GODP</string>
<key>public.filename-extension</key>
<array>
<string>godot</string>
</array>
<key>public.mime-type</key>
- <string>project/x-godot</string>
+ <string>text/x-godot-project</string>
</dict>
</dict>
</array>
diff --git a/misc/dist/osx_tools.app/Contents/Resources/Document.icns b/misc/dist/osx_tools.app/Contents/Resources/Document.icns
deleted file mode 100644
index 06d7c65298..0000000000
--- a/misc/dist/osx_tools.app/Contents/Resources/Document.icns
+++ /dev/null
Binary files differ
diff --git a/misc/dist/osx_tools.app/Contents/Resources/GDScript.icns b/misc/dist/osx_tools.app/Contents/Resources/GDScript.icns
new file mode 100644
index 0000000000..b08e8df339
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Resources/GDScript.icns
Binary files differ
diff --git a/misc/dist/osx_tools.app/Contents/Resources/Project.icns b/misc/dist/osx_tools.app/Contents/Resources/Project.icns
new file mode 100644
index 0000000000..10e31528e4
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Resources/Project.icns
Binary files differ
diff --git a/misc/dist/osx_tools.app/Contents/Resources/Resource.icns b/misc/dist/osx_tools.app/Contents/Resources/Resource.icns
new file mode 100644
index 0000000000..9648cb616e
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Resources/Resource.icns
Binary files differ
diff --git a/misc/dist/osx_tools.app/Contents/Resources/Scene.icns b/misc/dist/osx_tools.app/Contents/Resources/Scene.icns
new file mode 100644
index 0000000000..c8c3dee07e
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Resources/Scene.icns
Binary files differ
diff --git a/modules/bullet/bullet_physics_server.cpp b/modules/bullet/bullet_physics_server.cpp
index 315afe3d72..7bc731e75e 100644
--- a/modules/bullet/bullet_physics_server.cpp
+++ b/modules/bullet/bullet_physics_server.cpp
@@ -1471,6 +1471,22 @@ bool BulletPhysicsServer::generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis
return generic_6dof_joint->get_flag(p_axis, p_flag);
}
+void BulletPhysicsServer::generic_6dof_joint_set_precision(RID p_joint, int p_precision) {
+ JointBullet *joint = joint_owner.get(p_joint);
+ ERR_FAIL_COND(!joint);
+ ERR_FAIL_COND(joint->get_type() != JOINT_6DOF);
+ Generic6DOFJointBullet *generic_6dof_joint = static_cast<Generic6DOFJointBullet *>(joint);
+ generic_6dof_joint->set_precision(p_precision);
+}
+
+int BulletPhysicsServer::generic_6dof_joint_get_precision(RID p_joint) {
+ JointBullet *joint = joint_owner.get(p_joint);
+ ERR_FAIL_COND_V(!joint, 0);
+ ERR_FAIL_COND_V(joint->get_type() != JOINT_6DOF, 0);
+ Generic6DOFJointBullet *generic_6dof_joint = static_cast<Generic6DOFJointBullet *>(joint);
+ return generic_6dof_joint->get_precision();
+}
+
void BulletPhysicsServer::free(RID p_rid) {
if (shape_owner.owns(p_rid)) {
diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h
index c8c782267e..0cea3f5ba6 100644
--- a/modules/bullet/bullet_physics_server.h
+++ b/modules/bullet/bullet_physics_server.h
@@ -375,6 +375,9 @@ public:
virtual void generic_6dof_joint_set_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag, bool p_enable);
virtual bool generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisFlag p_flag);
+ virtual void generic_6dof_joint_set_precision(RID p_joint, int precision);
+ virtual int generic_6dof_joint_get_precision(RID p_joint);
+
/* MISC */
virtual void free(RID p_rid);
diff --git a/modules/bullet/generic_6dof_joint_bullet.cpp b/modules/bullet/generic_6dof_joint_bullet.cpp
index a94b88d566..812dcd2d56 100644
--- a/modules/bullet/generic_6dof_joint_bullet.cpp
+++ b/modules/bullet/generic_6dof_joint_bullet.cpp
@@ -265,3 +265,11 @@ bool Generic6DOFJointBullet::get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOF
ERR_FAIL_INDEX_V(p_axis, 3, false);
return flags[p_axis][p_flag];
}
+
+void Generic6DOFJointBullet::set_precision(int p_precision) {
+ sixDOFConstraint->setOverrideNumSolverIterations(MAX(1, p_precision));
+}
+
+int Generic6DOFJointBullet::get_precision() const {
+ return sixDOFConstraint->getOverrideNumSolverIterations();
+}
diff --git a/modules/bullet/generic_6dof_joint_bullet.h b/modules/bullet/generic_6dof_joint_bullet.h
index 176127ed6c..848c3a10cd 100644
--- a/modules/bullet/generic_6dof_joint_bullet.h
+++ b/modules/bullet/generic_6dof_joint_bullet.h
@@ -68,6 +68,9 @@ public:
void set_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJointAxisFlag p_flag, bool p_value);
bool get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJointAxisFlag p_flag) const;
+
+ void set_precision(int p_precision);
+ int get_precision() const;
};
#endif
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp
index 3b44ab838e..0117bb375f 100644
--- a/modules/bullet/godot_result_callbacks.cpp
+++ b/modules/bullet/godot_result_callbacks.cpp
@@ -102,6 +102,9 @@ bool GodotAllConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) con
}
btScalar GodotAllConvexResultCallback::addSingleResult(btCollisionWorld::LocalConvexResult &convexResult, bool normalInWorldSpace) {
+ if (count >= m_resultMax)
+ return 1; // not used by bullet
+
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(convexResult.m_hitCollisionObject->getUserPointer());
PhysicsDirectSpaceState::ShapeResult &result = m_results[count];
@@ -172,6 +175,9 @@ btScalar GodotClosestConvexResultCallback::addSingleResult(btCollisionWorld::Loc
}
bool GodotAllContactResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
+ if (m_count >= m_resultMax)
+ return false;
+
const bool needs = GodotFilterCallback::test_collision_filters(m_collisionFilterGroup, m_collisionFilterMask, proxy0->m_collisionFilterGroup, proxy0->m_collisionFilterMask);
if (needs) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
@@ -249,6 +255,8 @@ bool GodotContactPairContactResultCallback::needsCollision(btBroadphaseProxy *pr
}
btScalar GodotContactPairContactResultCallback::addSingleResult(btManifoldPoint &cp, const btCollisionObjectWrapper *colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper *colObj1Wrap, int partId1, int index1) {
+ if (m_count >= m_resultMax)
+ return 1; // not used by bullet
if (m_self_object == colObj0Wrap->getCollisionObject()) {
B_TO_G(cp.m_localPointA, m_results[m_count * 2 + 0]); // Local contact
diff --git a/modules/bullet/shape_bullet.cpp b/modules/bullet/shape_bullet.cpp
index 8bb621a863..2027d8e1eb 100644
--- a/modules/bullet/shape_bullet.cpp
+++ b/modules/bullet/shape_bullet.cpp
@@ -461,7 +461,47 @@ void HeightMapShapeBullet::set_data(const Variant &p_data) {
int l_width = d["width"];
int l_depth = d["depth"];
- PoolVector<real_t> l_heights = d["heights"];
+
+ // TODO This code will need adjustments if real_t is set to `double`,
+ // because that precision is unnecessary for a heightmap and Bullet doesn't support it...
+
+ PoolVector<real_t> l_heights;
+ Variant l_heights_v = d["heights"];
+
+ if (l_heights_v.get_type() == Variant::POOL_REAL_ARRAY) {
+ // Ready-to-use heights can be passed
+
+ l_heights = l_heights_v;
+
+ } else if (l_heights_v.get_type() == Variant::OBJECT) {
+ // If an image is passed, we have to convert it to a format Bullet supports.
+ // this would be expensive to do with a script, so it's nice to have it here.
+
+ Ref<Image> l_image = l_heights_v;
+ ERR_FAIL_COND(l_image.is_null());
+
+ // Float is the only common format between Godot and Bullet that can be used for decent collision.
+ // (Int16 would be nice too but we still don't have it)
+ // We could convert here automatically but it's better to not be intrusive and let the caller do it if necessary.
+ ERR_FAIL_COND(l_image->get_format() != Image::FORMAT_RF);
+
+ PoolByteArray im_data = l_image->get_data();
+
+ l_heights.resize(l_image->get_width() * l_image->get_width());
+
+ PoolRealArray::Write w = l_heights.write();
+ PoolByteArray::Read r = im_data.read();
+ float *rp = (float *)r.ptr();
+ // At this point, `rp` could be used directly for Bullet, but I don't know how safe it would be.
+
+ for (int i = 0; i < l_heights.size(); ++i) {
+ w[i] = rp[i];
+ }
+
+ } else {
+ ERR_EXPLAIN("Expected PoolRealArray or float Image.");
+ ERR_FAIL();
+ }
ERR_FAIL_COND(l_width <= 0);
ERR_FAIL_COND(l_depth <= 0);
@@ -497,19 +537,8 @@ PhysicsServer::ShapeType HeightMapShapeBullet::get_type() const {
void HeightMapShapeBullet::setup(PoolVector<real_t> &p_heights, int p_width, int p_depth, real_t p_min_height, real_t p_max_height) {
// TODO cell size must be tweaked using localScaling, which is a shared property for all Bullet shapes
- { // Copy
-
- // TODO If Godot supported 16-bit integer image format, we could share the same memory block for heightfields
- // without having to copy anything, optimizing memory and loading performance (Bullet only reads and doesn't take ownership of the data).
-
- const int heights_size = p_heights.size();
- heights.resize(heights_size);
- PoolVector<real_t>::Read p_heights_r = p_heights.read();
- PoolVector<real_t>::Write heights_w = heights.write();
- for (int i = heights_size - 1; 0 <= i; --i) {
- heights_w[i] = p_heights_r[i];
- }
- }
+ // If this array is resized outside of here, it should be preserved due to CoW
+ heights = p_heights;
width = p_width;
depth = p_depth;
diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp
index a4c34e7583..f4b061f494 100644
--- a/modules/csg/csg_shape.cpp
+++ b/modules/csg/csg_shape.cpp
@@ -47,6 +47,7 @@ void CSGShape::set_use_collision(bool p_enable) {
PhysicsServer::get_singleton()->body_set_state(root_collision_instance, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform());
PhysicsServer::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid());
PhysicsServer::get_singleton()->body_set_space(root_collision_instance, get_world()->get_space());
+ PhysicsServer::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id());
_make_dirty(); //force update
} else {
PhysicsServer::get_singleton()->free(root_collision_instance);
@@ -196,17 +197,6 @@ void CSGShape::mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexc
fvTexcOut[1] = t.y;
}
-void CSGShape::mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert) {
- ShapeUpdateSurface &surface = *((ShapeUpdateSurface *)pContext->m_pUserData);
-
- int i = (iFace * 3 + iVert) * 4;
-
- surface.tansw[i++] = fvTangent[0];
- surface.tansw[i++] = fvTangent[1];
- surface.tansw[i++] = fvTangent[2];
- surface.tansw[i++] = fSign;
-}
-
void CSGShape::mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT,
const tbool bIsOrientationPreserving, const int iFace, const int iVert) {
@@ -215,7 +205,7 @@ void CSGShape::mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const f
int i = iFace * 3 + iVert;
Vector3 normal = surface.normalsw[i];
Vector3 tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]);
- Vector3 bitangent = Vector3(fvBiTangent[0], fvBiTangent[1], fvBiTangent[2]);
+ Vector3 bitangent = Vector3(-fvBiTangent[0], -fvBiTangent[1], -fvBiTangent[2]); // for some reason these are reversed, something with the coordinate system in Godot
float d = bitangent.dot(normal.cross(tangent));
i *= 4;
@@ -468,6 +458,7 @@ void CSGShape::_notification(int p_what) {
PhysicsServer::get_singleton()->body_set_state(root_collision_instance, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform());
PhysicsServer::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid());
PhysicsServer::get_singleton()->body_set_space(root_collision_instance, get_world()->get_space());
+ PhysicsServer::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id());
}
_make_dirty();
diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h
index 0a4bb5f665..7326f3d36a 100644
--- a/modules/csg/csg_shape.h
+++ b/modules/csg/csg_shape.h
@@ -97,7 +97,6 @@ private:
static void mikktGetPosition(const SMikkTSpaceContext *pContext, float fvPosOut[], const int iFace, const int iVert);
static void mikktGetNormal(const SMikkTSpaceContext *pContext, float fvNormOut[], const int iFace, const int iVert);
static void mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexcOut[], const int iFace, const int iVert);
- static void mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert);
static void mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT,
const tbool bIsOrientationPreserving, const int iFace, const int iVert);
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index eb133502c4..bcaf3f346e 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -294,6 +294,10 @@ MethodInfo NativeScript::get_method_info(const StringName &p_method) const {
return MethodInfo();
}
+bool NativeScript::is_valid() const {
+ return true;
+}
+
bool NativeScript::is_tool() const {
NativeScriptDesc *script_data = get_script_desc();
diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h
index 51370f5fbf..e6f3c06ee5 100644
--- a/modules/gdnative/nativescript/nativescript.h
+++ b/modules/gdnative/nativescript/nativescript.h
@@ -160,6 +160,7 @@ public:
virtual MethodInfo get_method_info(const StringName &p_method) const;
virtual bool is_tool() const;
+ virtual bool is_valid() const;
virtual ScriptLanguage *get_language() const;
diff --git a/modules/gdnative/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h
index 31c6c4d67f..3ade8ac004 100644
--- a/modules/gdnative/pluginscript/pluginscript_script.h
+++ b/modules/gdnative/pluginscript/pluginscript_script.h
@@ -102,6 +102,7 @@ public:
PropertyInfo get_property_info(const StringName &p_property) const;
bool is_tool() const { return _tool; }
+ bool is_valid() const { return true; }
virtual ScriptLanguage *get_language() const;
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index 1f5f5035f9..538249c8e2 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -867,7 +867,6 @@ bool GDScript::has_script_signal(const StringName &p_signal) const {
else if (base_cache.is_valid()) {
return base_cache->has_script_signal(p_signal);
}
-
#endif
return false;
}
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h
index f344beba9f..752d660ffb 100644
--- a/modules/gdscript/gdscript.h
+++ b/modules/gdscript/gdscript.h
@@ -141,7 +141,7 @@ protected:
static void _bind_methods();
public:
- bool is_valid() const { return valid; }
+ virtual bool is_valid() const { return valid; }
const Map<StringName, Ref<GDScript> > &get_subclasses() const { return subclasses; }
const Map<StringName, Variant> &get_constants() const { return constants; }
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 310c4e21f2..caa7fbfeca 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -132,7 +132,7 @@ GDScriptDataType GDScriptCompiler::_gdtype_from_datatype(const GDScriptParser::D
result.kind = GDScriptDataType::SCRIPT;
result.script_type = p_datatype.script_type;
result.native_type = result.script_type->get_instance_base_type();
- }
+ } break;
case GDScriptParser::DataType::GDSCRIPT: {
result.kind = GDScriptDataType::GDSCRIPT;
result.script_type = p_datatype.script_type;
diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp
index 2f31d59c46..2485e6f04a 100644
--- a/modules/gdscript/gdscript_functions.cpp
+++ b/modules/gdscript/gdscript_functions.cpp
@@ -758,22 +758,14 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_
r_ret = Variant();
return;
}
+ r_ret = *p_args[0];
VariantParser::StreamString ss;
ss.s = *p_args[0];
String errs;
int line;
- Error err = VariantParser::parse(&ss, r_ret, errs, line);
-
- if (err != OK) {
- r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
- r_error.argument = 0;
- r_error.expected = Variant::STRING;
- r_ret = "Parse error at line " + itos(line) + ": " + errs;
- return;
- }
-
+ (void)VariantParser::parse(&ss, r_ret, errs, line);
} break;
case VAR_TO_BYTES: {
VALIDATE_ARG_COUNT(1);
@@ -890,7 +882,7 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_
int incr = *p_args[2];
if (incr == 0) {
- r_ret = RTR("step argument is zero!");
+ r_ret = RTR("Step argument is zero!");
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
return;
}
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 0926c1a1ab..6ea0dbcb19 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -5746,18 +5746,23 @@ bool GDScriptParser::_is_type_compatible(const DataType &p_container, const Data
if (p_container.kind == DataType::BUILTIN && p_expression.kind == DataType::BUILTIN) {
bool valid = p_container.builtin_type == p_expression.builtin_type;
if (p_allow_implicit_conversion) {
- valid = valid || (p_container.builtin_type == Variant::INT && p_expression.builtin_type == Variant::REAL);
- valid = valid || (p_container.builtin_type == Variant::REAL && p_expression.builtin_type == Variant::INT);
- valid = valid || (p_container.builtin_type == Variant::STRING && p_expression.builtin_type == Variant::NODE_PATH);
- valid = valid || (p_container.builtin_type == Variant::NODE_PATH && p_expression.builtin_type == Variant::STRING);
- valid = valid || (p_container.builtin_type == Variant::BOOL && p_expression.builtin_type == Variant::REAL);
- valid = valid || (p_container.builtin_type == Variant::BOOL && p_expression.builtin_type == Variant::INT);
- valid = valid || (p_container.builtin_type == Variant::INT && p_expression.builtin_type == Variant::BOOL);
- valid = valid || (p_container.builtin_type == Variant::REAL && p_expression.builtin_type == Variant::BOOL);
+ valid = valid || Variant::can_convert_strict(p_expression.builtin_type, p_container.builtin_type);
}
return valid;
}
+ if (p_container.kind == DataType::BUILTIN && p_container.builtin_type == Variant::OBJECT) {
+ // Object built-in is a special case, it's compatible with any object and with null
+ if (p_expression.kind == DataType::BUILTIN && p_expression.builtin_type == Variant::NIL) {
+ return true;
+ }
+ if (p_expression.kind == DataType::BUILTIN) {
+ return false;
+ }
+ // If it's not a built-in, must be an object
+ return true;
+ }
+
if (p_container.kind == DataType::BUILTIN || (p_expression.kind == DataType::BUILTIN && p_expression.builtin_type != Variant::NIL)) {
// Can't mix built-ins with objects
return false;
diff --git a/modules/mono/SCsub b/modules/mono/SCsub
index 0e5dd9b4cf..e1f5e2ef28 100644
--- a/modules/mono/SCsub
+++ b/modules/mono/SCsub
@@ -103,6 +103,16 @@ import os
def find_nuget_unix():
+ import os
+
+ if 'NUGET_PATH' in os.environ:
+ hint_path = os.environ['NUGET_PATH']
+ if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
+ return hint_path
+ hint_path = os.path.join(hint_path, 'nuget')
+ if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
+ return hint_path
+
import os.path
import sys
@@ -129,6 +139,16 @@ def find_nuget_unix():
def find_nuget_windows():
+ import os
+
+ if 'NUGET_PATH' in os.environ:
+ hint_path = os.environ['NUGET_PATH']
+ if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
+ return hint_path
+ hint_path = os.path.join(hint_path, 'nuget.exe')
+ if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
+ return hint_path
+
import mono_reg_utils as monoreg
mono_root = ''
@@ -160,14 +180,6 @@ def find_nuget_windows():
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
return hint_path
- if 'NUGET_PATH' in os.environ:
- hint_path = os.environ['NUGET_PATH']
- if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
- return hint_path
- hint_path = os.path.join(hint_path, 'nuget.exe')
- if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
- return hint_path
-
return None
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 700e518cfc..943d95bfc9 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -50,6 +50,7 @@
#include "mono_gd/gd_mono_marshal.h"
#include "signal_awaiter_utils.h"
#include "utils/macros.h"
+#include "utils/mutex_utils.h"
#include "utils/string_utils.h"
#include "utils/thread_local.h"
@@ -378,60 +379,72 @@ static String variant_type_to_managed_name(const String &p_var_type_name) {
return "object";
if (!ClassDB::class_exists(p_var_type_name)) {
- Variant::Type var_types[] = {
- Variant::BOOL,
- Variant::INT,
- Variant::REAL,
- Variant::STRING,
- Variant::VECTOR2,
- Variant::RECT2,
- Variant::VECTOR3,
- Variant::TRANSFORM2D,
- Variant::PLANE,
- Variant::QUAT,
- Variant::AABB,
- Variant::BASIS,
- Variant::TRANSFORM,
- Variant::COLOR,
- Variant::NODE_PATH,
- Variant::_RID
- };
-
- for (int i = 0; i < sizeof(var_types) / sizeof(Variant::Type); i++) {
- if (p_var_type_name == Variant::get_type_name(var_types[i]))
- return p_var_type_name;
- }
+ return p_var_type_name;
+ }
- if (p_var_type_name == "String")
- return "string"; // I prefer this one >:[
+ if (p_var_type_name == Variant::get_type_name(Variant::OBJECT))
+ return "Godot.Object";
- // TODO these will be rewritten later into custom containers
+ if (p_var_type_name == Variant::get_type_name(Variant::REAL)) {
+#ifdef REAL_T_IS_DOUBLE
+ return "double";
+#else
+ return "float";
+#endif
+ }
- if (p_var_type_name == "Array")
- return "object[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::STRING))
+ return "string"; // I prefer this one >:[
- if (p_var_type_name == "Dictionary")
- return "Dictionary<object, object>";
+ if (p_var_type_name == Variant::get_type_name(Variant::DICTIONARY))
+ return "Collections.Dictionary";
- if (p_var_type_name == "PoolByteArray")
- return "byte[]";
- if (p_var_type_name == "PoolIntArray")
- return "int[]";
- if (p_var_type_name == "PoolRealArray")
- return "float[]";
- if (p_var_type_name == "PoolStringArray")
- return "string[]";
- if (p_var_type_name == "PoolVector2Array")
- return "Vector2[]";
- if (p_var_type_name == "PoolVector3Array")
- return "Vector3[]";
- if (p_var_type_name == "PoolColorArray")
- return "Color[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::ARRAY))
+ return "Collections.Array";
- return "object";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_BYTE_ARRAY))
+ return "byte[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_INT_ARRAY))
+ return "int[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_REAL_ARRAY)) {
+#ifdef REAL_T_IS_DOUBLE
+ return "double[]";
+#else
+ return "float[]";
+#endif
+ }
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_STRING_ARRAY))
+ return "string[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_VECTOR2_ARRAY))
+ return "Vector2[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_VECTOR3_ARRAY))
+ return "Vector3[]";
+ if (p_var_type_name == Variant::get_type_name(Variant::POOL_COLOR_ARRAY))
+ return "Color[]";
+
+ Variant::Type var_types[] = {
+ Variant::BOOL,
+ Variant::INT,
+ Variant::VECTOR2,
+ Variant::RECT2,
+ Variant::VECTOR3,
+ Variant::TRANSFORM2D,
+ Variant::PLANE,
+ Variant::QUAT,
+ Variant::AABB,
+ Variant::BASIS,
+ Variant::TRANSFORM,
+ Variant::COLOR,
+ Variant::NODE_PATH,
+ Variant::_RID
+ };
+
+ for (int i = 0; i < sizeof(var_types) / sizeof(Variant::Type); i++) {
+ if (p_var_type_name == Variant::get_type_name(var_types[i]))
+ return p_var_type_name;
}
- return p_var_type_name;
+ return "object";
}
String CSharpLanguage::make_function(const String &, const String &p_name, const PoolStringArray &p_args) const {
@@ -507,8 +520,7 @@ Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObjec
MonoException *exc = NULL;
- GDMonoUtils::StackTrace_GetFrames st_get_frames = CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames);
- MonoArray *frames = st_get_frames(p_stack_trace, (MonoObject **)&exc);
+ MonoArray *frames = invoke_method_thunk(CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames), p_stack_trace, (MonoObject **)&exc);
if (exc) {
GDMonoUtils::debug_print_unhandled_exception(exc);
@@ -532,7 +544,7 @@ Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObjec
MonoString *file_name;
int file_line_num;
MonoString *method_decl;
- get_sf_info(frame, &file_name, &file_line_num, &method_decl, (MonoObject **)&exc);
+ invoke_method_thunk(get_sf_info, frame, &file_name, &file_line_num, &method_decl, (MonoObject **)&exc);
if (exc) {
GDMonoUtils::debug_print_unhandled_exception(exc);
@@ -561,10 +573,8 @@ void CSharpLanguage::frame() {
MonoObject *task_scheduler = task_scheduler_handle->get_target();
if (task_scheduler) {
- GDMonoUtils::GodotTaskScheduler_Activate thunk = CACHED_METHOD_THUNK(GodotTaskScheduler, Activate);
-
MonoException *exc = NULL;
- thunk(task_scheduler, (MonoObject **)&exc);
+ invoke_method_thunk(CACHED_METHOD_THUNK(GodotTaskScheduler, Activate), task_scheduler, (MonoObject **)&exc);
if (exc) {
GDMonoUtils::debug_unhandled_exception(exc);
@@ -599,24 +609,20 @@ void CSharpLanguage::reload_all_scripts() {
#ifdef DEBUG_ENABLED
-#ifndef NO_THREADS
- lock->lock();
-#endif
-
List<Ref<CSharpScript> > scripts;
- SelfList<CSharpScript> *elem = script_list.first();
- while (elem) {
- if (elem->self()->get_path().is_resource_file()) {
- scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to gdscript to avoid being erased by accident
+ {
+ SCOPED_MUTEX_LOCK(script_instances_mutex);
+
+ SelfList<CSharpScript> *elem = script_list.first();
+ while (elem) {
+ if (elem->self()->get_path().is_resource_file()) {
+ scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to gdscript to avoid being erased by accident
+ }
+ elem = elem->next();
}
- elem = elem->next();
}
-#ifndef NO_THREADS
- lock->unlock();
-#endif
-
//as scripts are going to be reloaded, must proceed without locking here
scripts.sort_custom<CSharpScriptDepSort>(); //update in inheritance dependency order
@@ -625,6 +631,7 @@ void CSharpLanguage::reload_all_scripts() {
E->get()->load_source_code(E->get()->get_path());
E->get()->reload(true);
}
+
#endif
}
@@ -634,15 +641,17 @@ void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft
#ifdef TOOLS_ENABLED
MonoReloadNode::get_singleton()->restart_reload_timer();
- reload_assemblies_if_needed(p_soft_reload);
+ if (is_assembly_reloading_needed()) {
+ reload_assemblies(p_soft_reload);
+ }
#endif
}
#ifdef TOOLS_ENABLED
-void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) {
+bool CSharpLanguage::is_assembly_reloading_needed() {
if (!gdmono->is_runtime_initialized())
- return;
+ return false;
GDMonoAssembly *proj_assembly = gdmono->get_project_assembly();
@@ -660,164 +669,208 @@ void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) {
// Maybe it wasn't loaded from the default path, so check this as well
proj_asm_path = GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name);
if (!FileAccess::exists(proj_asm_path))
- return; // No assembly to load
+ return false; // No assembly to load
}
if (FileAccess::get_modified_time(proj_asm_path) <= proj_assembly->get_modified_time())
- return; // Already up to date
+ return false; // Already up to date
} else {
if (!FileAccess::exists(GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name)))
- return; // No assembly to load
+ return false; // No assembly to load
}
if (!gdmono->get_core_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_CORE))
- return; // The core API assembly to load is invalidated
+ return false; // The core API assembly to load is invalidated
if (!gdmono->get_editor_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_EDITOR))
- return; // The editor API assembly to load is invalidated
+ return false; // The editor API assembly to load is invalidated
-#ifndef NO_THREADS
- lock->lock();
-#endif
+ return true;
+}
+
+void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
+
+ if (!gdmono->is_runtime_initialized())
+ return;
+
+ // There is no soft reloading with Mono. It's always hard reloading.
List<Ref<CSharpScript> > scripts;
- SelfList<CSharpScript> *elem = script_list.first();
- while (elem) {
- if (elem->self()->get_path().is_resource_file()) {
+ {
+ SCOPED_MUTEX_LOCK(script_instances_mutex);
- scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to CSharpScript to avoid being erased by accident
+ for (SelfList<CSharpScript> *elem = script_list.first(); elem; elem = elem->next()) {
+ if (elem->self()->get_path().is_resource_file()) {
+ // Cast to CSharpScript to avoid being erased by accident
+ scripts.push_back(Ref<CSharpScript>(elem->self()));
+ }
}
- elem = elem->next();
}
-#ifndef NO_THREADS
- lock->unlock();
-#endif
+ List<Ref<CSharpScript> > to_reload;
- //when someone asks you why dynamically typed languages are easier to write....
+ // As scripts are going to be reloaded, must proceed without locking here
- Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > > to_reload;
+ scripts.sort_custom<CSharpScriptDepSort>(); // Update in inheritance dependency order
- //as scripts are going to be reloaded, must proceed without locking here
+ for (List<Ref<CSharpScript> >::Element *E = scripts.front(); E; E = E->next()) {
- scripts.sort_custom<CSharpScriptDepSort>(); //update in inheritance dependency order
+ Ref<CSharpScript> &script = E->get();
- for (List<Ref<CSharpScript> >::Element *E = scripts.front(); E; E = E->next()) {
+ to_reload.push_back(script);
- to_reload.insert(E->get(), Map<ObjectID, List<Pair<StringName, Variant> > >());
+ // Script::instances are deleted during managed object disposal, which happens on domain finalize.
+ // Only placeholders are kept. Therefore we need to keep a copy before that happens.
- if (!p_soft_reload) {
+ for (Set<Object *>::Element *E = script->instances.front(); E; E = E->next()) {
+ script->pending_reload_instances.insert(E->get()->get_instance_id());
+ }
- //save state and remove script from instances
- Map<ObjectID, List<Pair<StringName, Variant> > > &map = to_reload[E->get()];
+#ifdef TOOLS_ENABLED
+ for (Set<PlaceHolderScriptInstance *>::Element *E = script->placeholders.front(); E; E = E->next()) {
+ script->pending_reload_instances.insert(E->get()->get_owner()->get_instance_id());
+ }
+#endif
- while (E->get()->instances.front()) {
- Object *obj = E->get()->instances.front()->get();
- //save instance info
- List<Pair<StringName, Variant> > state;
- if (obj->get_script_instance()) {
+ // FIXME: What about references? Need to keep them alive if only managed code references them.
- obj->get_script_instance()->get_property_state(state);
+ // Save state and remove script from instances
+ Map<ObjectID, CSharpScript::StateBackup> &owners_map = script->pending_reload_state;
- Ref<MonoGCHandle> gchandle = CAST_CSHARP_INSTANCE(obj->get_script_instance())->gchandle;
- if (gchandle.is_valid())
- gchandle->release();
+ while (script->instances.front()) {
+ Object *obj = script->instances.front()->get();
+ // Save instance info
+ CSharpScript::StateBackup state;
- map[obj->get_instance_id()] = state;
- obj->set_script(RefPtr());
- }
- }
+ ERR_CONTINUE(!obj->get_script_instance());
- //same thing for placeholders
- while (E->get()->placeholders.size()) {
-
- Object *obj = E->get()->placeholders.front()->get()->get_owner();
- //save instance info
- List<Pair<StringName, Variant> > state;
- if (obj->get_script_instance()) {
- obj->get_script_instance()->get_property_state(state);
- map[obj->get_instance_id()] = state;
- obj->set_script(RefPtr());
- } else {
- // no instance found. Let's remove it so we don't loop forever
- E->get()->placeholders.erase(E->get()->placeholders.front()->get());
- }
- }
+ // TODO: Proper state backup (Not only variants, serialize managed state of scripts)
+ obj->get_script_instance()->get_property_state(state.properties);
- for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get()->pending_reload_state.front(); F; F = F->next()) {
- map[F->key()] = F->get(); //pending to reload, use this one instead
- }
+ Ref<MonoGCHandle> gchandle = CAST_CSHARP_INSTANCE(obj->get_script_instance())->gchandle;
+ if (gchandle.is_valid())
+ gchandle->release();
- E->get()->_clear();
+ owners_map[obj->get_instance_id()] = state;
+ obj->set_script(RefPtr()); // Remove script and existing script instances (placeholder are not removed before domain reload)
}
+
+ script->_clear();
}
+ // Do domain reload
if (gdmono->reload_scripts_domain() != OK) {
// Failed to reload the scripts domain
// Make sure to add the scripts back to their owners before returning
- for (Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > >::Element *E = to_reload.front(); E; E = E->next()) {
- Ref<CSharpScript> scr = E->key();
- for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get().front(); F; F = F->next()) {
+ for (List<Ref<CSharpScript> >::Element *E = to_reload.front(); E; E = E->next()) {
+ Ref<CSharpScript> scr = E->get();
+
+ for (const Map<ObjectID, CSharpScript::StateBackup>::Element *F = scr->pending_reload_state.front(); F; F = F->next()) {
Object *obj = ObjectDB::get_instance(F->key());
+
if (!obj)
continue;
+
+ ObjectID obj_id = obj->get_instance_id();
+
+ // Use a placeholder for now to avoid losing the state when saving a scene
+
obj->set_script(scr.get_ref_ptr());
- // Save reload state for next time if not saved
- if (!scr->pending_reload_state.has(obj->get_instance_id())) {
- scr->pending_reload_state[obj->get_instance_id()] = F->get();
+
+ PlaceHolderScriptInstance *placeholder = scr->placeholder_instance_create(obj);
+ obj->set_script_instance(placeholder);
+
+ // Even though build didn't fail, this tells the placeholder to keep properties and
+ // it allows using property_set_fallback for restoring the state without a valid script.
+ placeholder->set_build_failed(true);
+
+ // Restore Variant properties state, it will be kept by the placeholder until the next script reloading
+ for (List<Pair<StringName, Variant> >::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) {
+ placeholder->property_set_fallback(G->get().first, G->get().second, NULL);
}
+
+ scr->pending_reload_state.erase(obj_id);
}
}
return;
}
- for (Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > >::Element *E = to_reload.front(); E; E = E->next()) {
+ for (List<Ref<CSharpScript> >::Element *E = to_reload.front(); E; E = E->next()) {
- Ref<CSharpScript> scr = E->key();
+ Ref<CSharpScript> scr = E->get();
scr->exports_invalidated = true;
scr->signals_invalidated = true;
scr->reload(p_soft_reload);
scr->update_exports();
- //restore state if saved
- for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get().front(); F; F = F->next()) {
+ {
+#ifdef DEBUG_ENABLED
+ for (Set<ObjectID>::Element *F = scr->pending_reload_instances.front(); F; F = F->next()) {
+ ObjectID obj_id = F->get();
+ Object *obj = ObjectDB::get_instance(obj_id);
- Object *obj = ObjectDB::get_instance(F->key());
- if (!obj)
- continue;
+ if (!obj) {
+ scr->pending_reload_state.erase(obj_id);
+ continue;
+ }
- if (!p_soft_reload) {
- //clear it just in case (may be a pending reload state)
- obj->set_script(RefPtr());
- }
- obj->set_script(scr.get_ref_ptr());
- if (!obj->get_script_instance()) {
- //failed, save reload state for next time if not saved
- if (!scr->pending_reload_state.has(obj->get_instance_id())) {
- scr->pending_reload_state[obj->get_instance_id()] = F->get();
+ ScriptInstance *si = obj->get_script_instance();
+
+#ifdef TOOLS_ENABLED
+ if (si) {
+ // If the script instance is not null, then it must be a placeholder.
+ // Non-placeholder script instances are removed in godot_icall_Object_Disposed.
+ CRASH_COND(!si->is_placeholder());
+
+ if (scr->is_tool() || ScriptServer::is_scripting_enabled()) {
+ // Replace placeholder with a script instance
+
+ CSharpScript::StateBackup &state_backup = scr->pending_reload_state[obj_id];
+
+ // Backup placeholder script instance state before replacing it with a script instance
+ obj->get_script_instance()->get_property_state(state_backup.properties);
+
+ ScriptInstance *script_instance = scr->instance_create(obj);
+
+ if (script_instance) {
+ scr->placeholders.erase(static_cast<PlaceHolderScriptInstance *>(si));
+ obj->set_script_instance(script_instance);
+ }
+
+ // TODO: Restore serialized state
+
+ for (List<Pair<StringName, Variant> >::Element *G = state_backup.properties.front(); G; G = G->next()) {
+ script_instance->set(G->get().first, G->get().second);
+ }
+
+ scr->pending_reload_state.erase(obj_id);
+ }
+
+ continue;
}
- continue;
- }
+#else
+ CRASH_COND(si != NULL);
+#endif
+ // Re-create script instance
- if (scr->valid && scr->is_tool() && obj->get_script_instance()->is_placeholder()) {
- // Script instance was a placeholder, but now the script was built successfully and is a tool script.
- // We have to replace the placeholder with an actual C# script instance.
- scr->placeholders.erase(static_cast<PlaceHolderScriptInstance *>(obj->get_script_instance()));
- ScriptInstance *script_instance = scr->instance_create(obj);
- obj->set_script_instance(script_instance); // Not necessary as it's already done in instance_create, but just in case...
- }
+ obj->set_script(scr.get_ref_ptr()); // will create the script instance as well
+
+ // TODO: Restore serialized state
- for (List<Pair<StringName, Variant> >::Element *G = F->get().front(); G; G = G->next()) {
- obj->get_script_instance()->set(G->get().first, G->get().second);
+ for (List<Pair<StringName, Variant> >::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) {
+ obj->get_script_instance()->set(G->get().first, G->get().second);
+ }
+
+ scr->pending_reload_state.erase(obj_id);
}
+#endif
- scr->pending_reload_state.erase(obj->get_instance_id()); //as it reloaded, remove pending state
+ scr->pending_reload_instances.clear();
}
-
- //if instance states were saved, set them!
}
+ // FIXME: Hack to refresh editor in order to display new properties and signals. See if there is a better alternative.
if (Engine::get_singleton()->is_editor_hint()) {
EditorNode::get_singleton()->get_inspector()->update_tree();
NodeDock::singleton->update_lists();
@@ -940,27 +993,18 @@ void CSharpLanguage::set_language_index(int p_idx) {
void CSharpLanguage::release_script_gchandle(Ref<MonoGCHandle> &p_gchandle) {
- if (!p_gchandle->is_released()) { // Do not locking unnecessarily
-#ifndef NO_THREADS
- get_singleton()->script_gchandle_release_lock->lock();
-#endif
-
+ if (!p_gchandle->is_released()) { // Do not lock unnecessarily
+ SCOPED_MUTEX_LOCK(get_singleton()->script_gchandle_release_mutex);
p_gchandle->release();
-
-#ifndef NO_THREADS
- get_singleton()->script_gchandle_release_lock->unlock();
-#endif
}
}
-void CSharpLanguage::release_script_gchandle(MonoObject *p_pinned_expected_obj, Ref<MonoGCHandle> &p_gchandle) {
+void CSharpLanguage::release_script_gchandle(MonoObject *p_expected_obj, Ref<MonoGCHandle> &p_gchandle) {
- uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(p_pinned_expected_obj); // we might lock after this, so pin it
+ uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(p_expected_obj); // We might lock after this, so pin it
- if (!p_gchandle->is_released()) { // Do not locking unnecessarily
-#ifndef NO_THREADS
- get_singleton()->script_gchandle_release_lock->lock();
-#endif
+ if (!p_gchandle->is_released()) { // Do not lock unnecessarily
+ SCOPED_MUTEX_LOCK(get_singleton()->script_gchandle_release_mutex);
MonoObject *target = p_gchandle->get_target();
@@ -968,13 +1012,9 @@ void CSharpLanguage::release_script_gchandle(MonoObject *p_pinned_expected_obj,
// already released and could have been replaced) or if we can't get its target MonoObject*
// (which doesn't necessarily mean it was released, and we want it released in order to
// avoid locking other threads unnecessarily).
- if (target == p_pinned_expected_obj || target == NULL) {
+ if (target == p_expected_obj || target == NULL) {
p_gchandle->release();
}
-
-#ifndef NO_THREADS
- get_singleton()->script_gchandle_release_lock->unlock();
-#endif
}
MonoGCHandle::free_handle(pinned_gchandle);
@@ -990,13 +1030,13 @@ CSharpLanguage::CSharpLanguage() {
gdmono = NULL;
#ifdef NO_THREADS
- lock = NULL;
- gchandle_bind_lock = NULL;
- script_gchandle_release_lock = NULL;
+ script_instances_mutex = NULL;
+ script_gchandle_release_mutex = NULL;
+ language_bind_mutex = NULL;
#else
- lock = Mutex::create();
- script_bind_lock = Mutex::create();
- script_gchandle_release_lock = Mutex::create();
+ script_instances_mutex = Mutex::create();
+ script_gchandle_release_mutex = Mutex::create();
+ language_bind_mutex = Mutex::create();
#endif
lang_idx = -1;
@@ -1006,19 +1046,19 @@ CSharpLanguage::~CSharpLanguage() {
finish();
- if (lock) {
- memdelete(lock);
- lock = NULL;
+ if (script_instances_mutex) {
+ memdelete(script_instances_mutex);
+ script_instances_mutex = NULL;
}
- if (script_bind_lock) {
- memdelete(script_bind_lock);
- script_bind_lock = NULL;
+ if (language_bind_mutex) {
+ memdelete(language_bind_mutex);
+ language_bind_mutex = NULL;
}
- if (script_gchandle_release_lock) {
- memdelete(script_gchandle_release_lock);
- script_gchandle_release_lock = NULL;
+ if (script_gchandle_release_mutex) {
+ memdelete(script_gchandle_release_mutex);
+ script_gchandle_release_mutex = NULL;
}
singleton = NULL;
@@ -1055,15 +1095,12 @@ void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) {
script_binding.wrapper_class = type_class; // cache
script_binding.gchandle = MonoGCHandle::create_strong(mono_object);
-#ifndef NO_THREADS
- script_bind_lock->lock();
-#endif
-
- void *data = (void *)script_bindings.insert(p_object, script_binding);
+ void *data;
-#ifndef NO_THREADS
- script_bind_lock->unlock();
-#endif
+ {
+ SCOPED_MUTEX_LOCK(language_bind_mutex);
+ data = (void *)script_bindings.insert(p_object, script_binding);
+ }
// Tie managed to unmanaged
Reference *ref = Object::cast_to<Reference>(p_object);
@@ -1093,23 +1130,19 @@ void CSharpLanguage::free_instance_binding_data(void *p_data) {
if (finalizing)
return; // inside CSharpLanguage::finish(), all the gchandle bindings are released there
-#ifndef NO_THREADS
- script_bind_lock->lock();
-#endif
+ {
+ SCOPED_MUTEX_LOCK(language_bind_mutex);
- Map<Object *, CSharpScriptBinding>::Element *data = (Map<Object *, CSharpScriptBinding>::Element *)p_data;
+ Map<Object *, CSharpScriptBinding>::Element *data = (Map<Object *, CSharpScriptBinding>::Element *)p_data;
- // Set the native instance field to IntPtr.Zero, if not yet garbage collected
- MonoObject *mono_object = data->value().gchandle->get_target();
- if (mono_object) {
- CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL);
- }
-
- script_bindings.erase(data);
+ // Set the native instance field to IntPtr.Zero, if not yet garbage collected
+ MonoObject *mono_object = data->value().gchandle->get_target();
+ if (mono_object) {
+ CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL);
+ }
-#ifndef NO_THREADS
- script_bind_lock->unlock();
-#endif
+ script_bindings.erase(data);
+ }
}
void CSharpLanguage::refcount_incremented_instance_binding(Object *p_object) {
@@ -1524,7 +1557,7 @@ void CSharpInstance::mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_f
} else {
r_owner_deleted = false;
CSharpLanguage::get_singleton()->release_script_gchandle(p_obj, gchandle);
- if (p_is_finalizer) {
+ if (p_is_finalizer && !GDMono::get_singleton()->is_finalizing_scripts_domain()) {
// If the native instance is still alive, then it was
// referenced from another thread before the finalizer could
// unreference it and delete it, so we want to keep it.
@@ -1651,6 +1684,8 @@ void CSharpInstance::notification(int p_notification) {
// It's safe to call Dispose() multiple times and NOTIFICATION_PREDELETE is guaranteed
// to be sent at least once, which happens right before the call to the destructor.
+ predelete_notified = true;
+
if (base_ref) {
// It's not safe to proceed if the owner derives Reference and the refcount reached 0.
// At this point, Dispose() was already called (manually or from the finalizer) so
@@ -1666,10 +1701,8 @@ void CSharpInstance::notification(int p_notification) {
MonoObject *mono_object = get_mono_object();
ERR_FAIL_NULL(mono_object);
- GDMonoUtils::GodotObject_Dispose thunk = CACHED_METHOD_THUNK(GodotObject, Dispose);
-
MonoException *exc = NULL;
- thunk(mono_object, (MonoObject **)&exc);
+ GDMonoUtils::dispose(mono_object, &exc);
if (exc) {
GDMonoUtils::set_pending_exception(exc);
@@ -1720,12 +1753,35 @@ CSharpInstance::CSharpInstance() :
owner(NULL),
base_ref(false),
ref_dying(false),
- unsafe_referenced(false) {
+ unsafe_referenced(false),
+ predelete_notified(false),
+ destructing_script_instance(false) {
}
CSharpInstance::~CSharpInstance() {
if (gchandle.is_valid()) {
+ if (!predelete_notified && !ref_dying) {
+ // This destructor is not called from the owners destructor.
+ // This could be being called from the owner's set_script_instance method,
+ // meaning this script is being replaced with another one. If this is the case,
+ // we must call Dispose here, because Dispose calls owner->set_script_instance(NULL)
+ // and that would mess up with the new script instance if called later.
+
+ MonoObject *mono_object = gchandle->get_target();
+
+ if (mono_object) {
+ MonoException *exc = NULL;
+ destructing_script_instance = true;
+ GDMonoUtils::dispose(mono_object, &exc);
+ destructing_script_instance = false;
+
+ if (exc) {
+ GDMonoUtils::set_pending_exception(exc);
+ }
+ }
+ }
+
gchandle->release(); // Make sure it's released
}
@@ -1734,9 +1790,7 @@ CSharpInstance::~CSharpInstance() {
}
if (script.is_valid() && owner) {
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->lock();
-#endif
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
#ifdef DEBUG_ENABLED
// CSharpInstance must not be created unless it's going to be added to the list for sure
@@ -1746,10 +1800,6 @@ CSharpInstance::~CSharpInstance() {
#else
script->instances.erase(owner);
#endif
-
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->unlock();
-#endif
}
}
@@ -1882,10 +1932,8 @@ bool CSharpScript::_update_exports() {
// Dispose the temporary managed instance
- GDMonoUtils::GodotObject_Dispose thunk = CACHED_METHOD_THUNK(GodotObject, Dispose);
-
MonoException *exc = NULL;
- thunk(tmp_object, (MonoObject **)&exc);
+ GDMonoUtils::dispose(tmp_object, &exc);
if (exc) {
ERR_PRINT("Exception thrown from method Dispose() of temporary MonoObject:");
@@ -2312,17 +2360,13 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg
ERR_FAIL_V(NULL);
}
- uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(mono_object); // we might lock after this, so pin it
-
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->lock();
-#endif
-
- instances.insert(instance->owner);
+ // Tie managed to unmanaged
+ instance->gchandle = MonoGCHandle::create_strong(mono_object);
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->unlock();
-#endif
+ {
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
+ instances.insert(instance->owner);
+ }
CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, instance->owner);
@@ -2330,13 +2374,8 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg
GDMonoMethod *ctor = script_class->get_method(CACHED_STRING_NAME(dotctor), p_argcount);
ctor->invoke(mono_object, p_args);
- // Tie managed to unmanaged
- instance->gchandle = MonoGCHandle::create_strong(mono_object);
-
/* STEP 3, PARTY */
- MonoGCHandle::free_handle(pinned_gchandle);
-
//@TODO make thread safe
return instance;
}
@@ -2411,17 +2450,8 @@ PlaceHolderScriptInstance *CSharpScript::placeholder_instance_create(Object *p_t
bool CSharpScript::instance_has(const Object *p_this) const {
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->lock();
-#endif
-
- bool ret = instances.has((Object *)p_this);
-
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->unlock();
-#endif
-
- return ret;
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
+ return instances.has((Object *)p_this);
}
bool CSharpScript::has_source_code() const {
@@ -2444,6 +2474,18 @@ void CSharpScript::set_source_code(const String &p_code) {
#endif
}
+void CSharpScript::get_script_method_list(List<MethodInfo> *p_list) const {
+
+ if (!script_class)
+ return;
+
+ // TODO: Filter out things unsuitable for explicit calls, like constructors.
+ const Vector<GDMonoMethod *> &methods = script_class->get_all_methods();
+ for (int i = 0; i < methods.size(); ++i) {
+ p_list->push_back(methods[i]->get_method_info());
+ }
+}
+
bool CSharpScript::has_method(const StringName &p_method) const {
if (!script_class)
@@ -2452,17 +2494,32 @@ bool CSharpScript::has_method(const StringName &p_method) const {
return script_class->has_fetched_method_unknown_params(p_method);
}
-Error CSharpScript::reload(bool p_keep_state) {
+MethodInfo CSharpScript::get_method_info(const StringName &p_method) const {
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->lock();
-#endif
+ if (!script_class)
+ return MethodInfo();
- bool has_instances = instances.size();
+ GDMonoClass *top = script_class;
-#ifndef NO_THREADS
- CSharpLanguage::singleton->lock->unlock();
-#endif
+ while (top && top != native) {
+ GDMonoMethod *params = top->get_fetched_method_unknown_params(p_method);
+ if (params) {
+ return params->get_method_info();
+ }
+
+ top = top->get_parent_class();
+ }
+
+ return MethodInfo();
+}
+
+Error CSharpScript::reload(bool p_keep_state) {
+
+ bool has_instances;
+ {
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
+ has_instances = instances.size();
+ }
ERR_FAIL_COND_V(!p_keep_state && has_instances, ERR_ALREADY_IN_USE);
@@ -2648,35 +2705,19 @@ CSharpScript::CSharpScript() :
_resource_path_changed();
#ifdef DEBUG_ENABLED
-
-#ifndef NO_THREADS
- CSharpLanguage::get_singleton()->lock->lock();
-#endif
-
- CSharpLanguage::get_singleton()->script_list.add(&script_list);
-
-#ifndef NO_THREADS
- CSharpLanguage::get_singleton()->lock->unlock();
+ {
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
+ CSharpLanguage::get_singleton()->script_list.add(&this->script_list);
+ }
#endif
-
-#endif // DEBUG_ENABLED
}
CSharpScript::~CSharpScript() {
#ifdef DEBUG_ENABLED
-
-#ifndef NO_THREADS
- CSharpLanguage::get_singleton()->lock->lock();
+ SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex);
+ CSharpLanguage::get_singleton()->script_list.remove(&this->script_list);
#endif
-
- CSharpLanguage::get_singleton()->script_list.remove(&script_list);
-
-#ifndef NO_THREADS
- CSharpLanguage::get_singleton()->lock->unlock();
-#endif
-
-#endif // DEBUG_ENABLED
}
/*************** RESOURCE ***************/
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index fc604df2a0..08466bae58 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -82,6 +82,21 @@ class CSharpScript : public Script {
Set<Object *> instances;
+#ifdef DEBUG_ENABLED
+ Set<ObjectID> pending_reload_instances;
+#endif
+
+ struct StateBackup {
+ // TODO
+ // Replace with buffer containing the serialized state of managed scripts.
+ // Keep variant state backup to use only with script instance placeholders.
+ List<Pair<StringName, Variant> > properties;
+ };
+
+#ifdef TOOLS_ENABLED
+ Map<ObjectID, CSharpScript::StateBackup> pending_reload_state;
+#endif
+
String source;
StringName name;
@@ -105,10 +120,6 @@ class CSharpScript : public Script {
virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder);
#endif
-#ifdef DEBUG_ENABLED
- Map<ObjectID, List<Pair<StringName, Variant> > > pending_reload_state;
-#endif
-
Map<StringName, PropertyInfo> member_info;
void _clear();
@@ -158,12 +169,14 @@ public:
virtual void update_exports();
virtual bool is_tool() const { return tool; }
+ virtual bool is_valid() const { return valid; }
+
virtual Ref<Script> get_base_script() const;
virtual ScriptLanguage *get_language() const;
- /* TODO */ virtual void get_script_method_list(List<MethodInfo> *p_list) const {}
+ virtual void get_script_method_list(List<MethodInfo> *p_list) const;
bool has_method(const StringName &p_method) const;
- /* TODO */ MethodInfo get_method_info(const StringName &p_method) const { return MethodInfo(); }
+ MethodInfo get_method_info(const StringName &p_method) const;
virtual int get_member_line(const StringName &p_member) const;
@@ -184,6 +197,8 @@ class CSharpInstance : public ScriptInstance {
bool base_ref;
bool ref_dying;
bool unsafe_referenced;
+ bool predelete_notified;
+ bool destructing_script_instance;
Ref<CSharpScript> script;
Ref<MonoGCHandle> gchandle;
@@ -204,6 +219,8 @@ class CSharpInstance : public ScriptInstance {
public:
MonoObject *get_mono_object() const;
+ _FORCE_INLINE_ bool is_destructing_script_instance() { return destructing_script_instance; }
+
virtual bool set(const StringName &p_name, const Variant &p_value);
virtual bool get(const StringName &p_name, Variant &r_ret) const;
virtual void get_property_list(List<PropertyInfo> *p_properties) const;
@@ -253,11 +270,9 @@ class CSharpLanguage : public ScriptLanguage {
GDMono *gdmono;
SelfList<CSharpScript>::List script_list;
- Mutex *lock;
- Mutex *script_bind_lock;
- Mutex *script_gchandle_release_lock;
-
- Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > > to_reload;
+ Mutex *script_instances_mutex;
+ Mutex *script_gchandle_release_mutex;
+ Mutex *language_bind_mutex;
Map<Object *, CSharpScriptBinding> script_bindings;
@@ -294,7 +309,8 @@ public:
bool debug_break_parse(const String &p_file, int p_line, const String &p_error);
#ifdef TOOLS_ENABLED
- void reload_assemblies_if_needed(bool p_soft_reload);
+ bool is_assembly_reloading_needed();
+ void reload_assemblies(bool p_soft_reload);
#endif
void project_assembly_loaded();
diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp
index f27511ad5e..cce86efbf5 100644
--- a/modules/mono/editor/godotsharp_editor.cpp
+++ b/modules/mono/editor/godotsharp_editor.cpp
@@ -475,7 +475,9 @@ MonoReloadNode *MonoReloadNode::singleton = NULL;
void MonoReloadNode::_reload_timer_timeout() {
- CSharpLanguage::get_singleton()->reload_assemblies_if_needed(false);
+ if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) {
+ CSharpLanguage::get_singleton()->reload_assemblies(false);
+ }
}
void MonoReloadNode::restart_reload_timer() {
@@ -493,7 +495,9 @@ void MonoReloadNode::_notification(int p_what) {
switch (p_what) {
case MainLoop::NOTIFICATION_WM_FOCUS_IN: {
restart_reload_timer();
- CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true);
+ if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) {
+ CSharpLanguage::get_singleton()->reload_assemblies(false);
+ }
} break;
default: {
} break;
diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp
index d7bfa54aba..e89d21d92d 100644
--- a/modules/mono/editor/mono_bottom_panel.cpp
+++ b/modules/mono/editor/mono_bottom_panel.cpp
@@ -154,10 +154,14 @@ void MonoBottomPanel::_build_project_pressed() {
Error metadata_err = CSharpProject::generate_scripts_metadata(GodotSharpDirs::get_project_csproj_path(), scripts_metadata_path);
ERR_FAIL_COND(metadata_err != OK);
- GodotSharpBuilds::get_singleton()->build_project_blocking("Tools");
+ bool build_success = GodotSharpBuilds::get_singleton()->build_project_blocking("Tools");
- MonoReloadNode::get_singleton()->restart_reload_timer();
- CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true);
+ if (build_success) {
+ MonoReloadNode::get_singleton()->restart_reload_timer();
+ if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) {
+ CSharpLanguage::get_singleton()->reload_assemblies(false);
+ }
+ }
}
void MonoBottomPanel::_view_log_pressed() {
diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp
index d718c3cc61..58916c5283 100644
--- a/modules/mono/glue/base_object_glue.cpp
+++ b/modules/mono/glue/base_object_glue.cpp
@@ -54,8 +54,10 @@ void godot_icall_Object_Disposed(MonoObject *p_obj, Object *p_ptr) {
if (p_ptr->get_script_instance()) {
CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(p_ptr->get_script_instance());
if (cs_instance) {
- cs_instance->mono_object_disposed(p_obj);
- p_ptr->set_script_instance(NULL);
+ if (!cs_instance->is_destructing_script_instance()) {
+ cs_instance->mono_object_disposed(p_obj);
+ p_ptr->set_script_instance(NULL);
+ }
return;
}
}
@@ -82,12 +84,14 @@ void godot_icall_Reference_Disposed(MonoObject *p_obj, Object *p_ptr, bool p_is_
if (ref->get_script_instance()) {
CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(ref->get_script_instance());
if (cs_instance) {
- bool r_owner_deleted;
- cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, r_owner_deleted);
- if (!r_owner_deleted && !p_is_finalizer) {
- // If the native instance is still alive and Dispose() was called
- // (instead of the finalizer), then we remove the script instance.
- ref->set_script_instance(NULL);
+ if (!cs_instance->is_destructing_script_instance()) {
+ bool r_owner_deleted;
+ cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, r_owner_deleted);
+ if (!r_owner_deleted && !p_is_finalizer) {
+ // If the native instance is still alive and Dispose() was called
+ // (instead of the finalizer), then we remove the script instance.
+ ref->set_script_instance(NULL);
+ }
}
return;
}
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index 4e515cde28..c55f9160bd 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -151,6 +151,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base
while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) {
StringName name = mono_method_get_name(raw_method);
+ // get_method implicitly fetches methods and adds them to this->methods
GDMonoMethod *method = get_method(raw_method, name);
ERR_CONTINUE(!method);
@@ -449,6 +450,21 @@ const Vector<GDMonoClass *> &GDMonoClass::get_all_delegates() {
return delegates_list;
}
+const Vector<GDMonoMethod *> &GDMonoClass::get_all_methods() {
+
+ if (!method_list_fetched) {
+ void *iter = NULL;
+ MonoMethod *raw_method = NULL;
+ while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) {
+ method_list.push_back(memnew(GDMonoMethod(mono_method_get_name(raw_method), raw_method)));
+ }
+
+ method_list_fetched = true;
+ }
+
+ return method_list;
+}
+
GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly) {
namespace_name = p_namespace;
@@ -460,6 +476,7 @@ GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name
attributes = NULL;
methods_fetched = false;
+ method_list_fetched = false;
fields_fetched = false;
properties_fetched = false;
delegates_fetched = false;
@@ -512,4 +529,8 @@ GDMonoClass::~GDMonoClass() {
methods.clear();
}
+
+ for (int i = 0; i < method_list.size(); ++i) {
+ memdelete(method_list[i]);
+ }
}
diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h
index 477305d503..689001f494 100644
--- a/modules/mono/mono_gd/gd_mono_class.h
+++ b/modules/mono/mono_gd/gd_mono_class.h
@@ -79,9 +79,14 @@ class GDMonoClass {
bool attrs_fetched;
MonoCustomAttrInfo *attributes;
+ // This contains both the original method names and remapped method names from the native Godot identifiers to the C# functions.
+ // Most method-related functions refer to this and it's possible this is unintuitive for outside users; this may be a prime location for refactoring or renaming.
bool methods_fetched;
HashMap<MethodKey, GDMonoMethod *, MethodKey::Hasher> methods;
+ bool method_list_fetched;
+ Vector<GDMonoMethod *> method_list;
+
bool fields_fetched;
Map<StringName, GDMonoField *> fields;
Vector<GDMonoField *> fields_list;
@@ -143,6 +148,8 @@ public:
const Vector<GDMonoClass *> &get_all_delegates();
+ const Vector<GDMonoMethod *> &get_all_methods();
+
~GDMonoClass();
};
diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp
index 5d9b9213e7..f09e93e662 100644
--- a/modules/mono/mono_gd/gd_mono_field.cpp
+++ b/modules/mono/mono_gd/gd_mono_field.cpp
@@ -423,7 +423,7 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_
MonoException *exc = NULL;
GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType);
- MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_dict) {
@@ -435,7 +435,7 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_
exc = NULL;
GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType);
- MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_array) {
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp
index 2543f5dc47..3f0a5d6e50 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.cpp
+++ b/modules/mono/mono_gd/gd_mono_marshal.cpp
@@ -163,7 +163,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
MonoException *exc = NULL;
GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType);
- MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_dict) {
@@ -172,7 +172,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
exc = NULL;
GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType);
- MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_array) {
@@ -192,8 +192,11 @@ String mono_to_utf8_string(MonoString *p_mono_string) {
MonoError error;
char *utf8 = mono_string_to_utf8_checked(p_mono_string, &error);
- ERR_EXPLAIN("Conversion of MonoString to UTF8 failed.");
- ERR_FAIL_COND_V(!mono_error_ok(&error), String());
+ if (!mono_error_ok(&error)) {
+ ERR_PRINTS(String("Failed to convert MonoString* to UTF-8: ") + mono_error_get_message(&error));
+ mono_error_cleanup(&error);
+ return String();
+ }
String ret = String::utf8(utf8);
@@ -546,7 +549,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
MonoException *exc = NULL;
GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType);
- MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_dict) {
@@ -555,7 +558,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
exc = NULL;
GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType);
- MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_array) {
@@ -710,16 +713,14 @@ Variant mono_object_to_variant(MonoObject *p_obj) {
if (CACHED_CLASS(Array) == type_class) {
MonoException *exc = NULL;
- GDMonoUtils::Array_GetPtr get_ptr = CACHED_METHOD_THUNK(Array, GetPtr);
- Array *ptr = get_ptr(p_obj, (MonoObject **)&exc);
+ Array *ptr = invoke_method_thunk(CACHED_METHOD_THUNK(Array, GetPtr), p_obj, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
return ptr ? Variant(*ptr) : Variant();
}
if (CACHED_CLASS(Dictionary) == type_class) {
MonoException *exc = NULL;
- GDMonoUtils::Dictionary_GetPtr get_ptr = CACHED_METHOD_THUNK(Dictionary, GetPtr);
- Dictionary *ptr = get_ptr(p_obj, (MonoObject **)&exc);
+ Dictionary *ptr = invoke_method_thunk(CACHED_METHOD_THUNK(Dictionary, GetPtr), p_obj, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
return ptr ? Variant(*ptr) : Variant();
}
@@ -731,7 +732,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) {
MonoException *exc = NULL;
GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType);
- MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_dict) {
@@ -744,7 +745,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) {
exc = NULL;
GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType);
- MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc);
+ MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc);
UNLIKELY_UNHANDLED_EXCEPTION(exc);
if (is_array) {
diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp
index 630bda8b4e..6ef6e97f5a 100644
--- a/modules/mono/mono_gd/gd_mono_method.cpp
+++ b/modules/mono/mono_gd/gd_mono_method.cpp
@@ -68,6 +68,10 @@ void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) {
param_types.push_back(param_type);
}
+
+ // clear the cache
+ method_info_fetched = false;
+ method_info = MethodInfo();
}
bool GDMonoMethod::is_static() {
@@ -246,11 +250,34 @@ void GDMonoMethod::get_parameter_types(Vector<ManagedType> &types) const {
}
}
+const MethodInfo &GDMonoMethod::get_method_info() {
+
+ if (!method_info_fetched) {
+ method_info.name = name;
+ method_info.return_val = PropertyInfo(GDMonoMarshal::managed_to_variant_type(return_type), "");
+
+ Vector<StringName> names;
+ get_parameter_names(names);
+
+ for (int i = 0; i < params_count; ++i) {
+ method_info.arguments.push_back(PropertyInfo(GDMonoMarshal::managed_to_variant_type(param_types[i]), names[i]));
+ }
+
+ // TODO: default arguments
+
+ method_info_fetched = true;
+ }
+
+ return method_info;
+}
+
GDMonoMethod::GDMonoMethod(StringName p_name, MonoMethod *p_method) {
name = p_name;
mono_method = p_method;
+ method_info_fetched = false;
+
attrs_fetched = false;
attributes = NULL;
diff --git a/modules/mono/mono_gd/gd_mono_method.h b/modules/mono/mono_gd/gd_mono_method.h
index 444ec2a67d..6c3ae5fce0 100644
--- a/modules/mono/mono_gd/gd_mono_method.h
+++ b/modules/mono/mono_gd/gd_mono_method.h
@@ -43,6 +43,9 @@ class GDMonoMethod : public GDMonoClassMember {
ManagedType return_type;
Vector<ManagedType> param_types;
+ bool method_info_fetched;
+ MethodInfo method_info;
+
bool attrs_fetched;
MonoCustomAttrInfo *attributes;
@@ -83,6 +86,8 @@ public:
void get_parameter_names(Vector<StringName> &names) const;
void get_parameter_types(Vector<ManagedType> &types) const;
+ const MethodInfo &get_method_info();
+
GDMonoMethod(StringName p_name, MonoMethod *p_method);
~GDMonoMethod();
};
diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp
index fe2c09799c..211987d242 100644
--- a/modules/mono/mono_gd/gd_mono_utils.cpp
+++ b/modules/mono/mono_gd/gd_mono_utils.cpp
@@ -694,4 +694,8 @@ uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool &
}
}
+void dispose(MonoObject *p_mono_object, MonoException **r_exc) {
+ invoke_method_thunk(CACHED_METHOD_THUNK(GodotObject, Dispose), p_mono_object, (MonoObject **)r_exc);
+}
+
} // namespace GDMonoUtils
diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h
index f00680ff03..170df32991 100644
--- a/modules/mono/mono_gd/gd_mono_utils.h
+++ b/modules/mono/mono_gd/gd_mono_utils.h
@@ -243,6 +243,8 @@ MonoObject *property_get_value(MonoProperty *p_prop, void *p_obj, void **p_param
uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool &r_error);
+void dispose(MonoObject *p_mono_object, MonoException **r_exc);
+
} // namespace GDMonoUtils
#define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field(BINDINGS_NATIVE_NAME_FIELD)->get_value(NULL)))
@@ -267,4 +269,93 @@ uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool &
#define GD_MONO_END_RUNTIME_INVOKE \
_runtime_invoke_count_ref -= 1;
+inline void invoke_method_thunk(void (*p_method_thunk)()) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk();
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R>
+R invoke_method_thunk(R (*p_method_thunk)()) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk();
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
+template <class P1>
+void invoke_method_thunk(void (*p_method_thunk)(P1), P1 p_arg1) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk(p_arg1);
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R, class P1>
+R invoke_method_thunk(R (*p_method_thunk)(P1), P1 p_arg1) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk(p_arg1);
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
+template <class P1, class P2>
+void invoke_method_thunk(void (*p_method_thunk)(P1, P2), P1 p_arg1, P2 p_arg2) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk(p_arg1, p_arg2);
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R, class P1, class P2>
+R invoke_method_thunk(R (*p_method_thunk)(P1, P2), P1 p_arg1, P2 p_arg2) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk(p_arg1, p_arg2);
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
+template <class P1, class P2, class P3>
+void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3), P1 p_arg1, P2 p_arg2, P3 p_arg3) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk(p_arg1, p_arg2, p_arg3);
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R, class P1, class P2, class P3>
+R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3), P1 p_arg1, P2 p_arg2, P3 p_arg3) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk(p_arg1, p_arg2, p_arg3);
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
+template <class P1, class P2, class P3, class P4>
+void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3, P4), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4);
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R, class P1, class P2, class P3, class P4>
+R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3, P4), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4);
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
+template <class P1, class P2, class P3, class P4, class P5>
+void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3, P4, P5), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4, P5 p_arg5) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4, p_arg5);
+ GD_MONO_END_RUNTIME_INVOKE;
+}
+
+template <class R, class P1, class P2, class P3, class P4, class P5>
+R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3, P4, P5), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4, P5 p_arg5) {
+ GD_MONO_BEGIN_RUNTIME_INVOKE;
+ R r = p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4, p_arg5);
+ GD_MONO_END_RUNTIME_INVOKE;
+ return r;
+}
+
#endif // GD_MONOUTILS_H
diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp
index fa1fbebb16..c6748309f3 100644
--- a/modules/mono/signal_awaiter_utils.cpp
+++ b/modules/mono/signal_awaiter_utils.cpp
@@ -98,11 +98,9 @@ Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argc
mono_array_set(signal_args, MonoObject *, i, boxed);
}
- GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback);
-
MonoException *exc = NULL;
GD_MONO_BEGIN_RUNTIME_INVOKE;
- thunk(get_target(), signal_args, (MonoObject **)&exc);
+ invoke_method_thunk(CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback), get_target(), signal_args, (MonoObject **)&exc);
GD_MONO_END_RUNTIME_INVOKE;
if (exc) {
@@ -129,14 +127,12 @@ SignalAwaiterHandle::SignalAwaiterHandle(MonoObject *p_managed) :
SignalAwaiterHandle::~SignalAwaiterHandle() {
if (!completed) {
- GDMonoUtils::SignalAwaiter_FailureCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, FailureCallback);
-
MonoObject *awaiter = get_target();
if (awaiter) {
MonoException *exc = NULL;
GD_MONO_BEGIN_RUNTIME_INVOKE;
- thunk(awaiter, (MonoObject **)&exc);
+ invoke_method_thunk(CACHED_METHOD_THUNK(SignalAwaiter, FailureCallback), awaiter, (MonoObject **)&exc);
GD_MONO_END_RUNTIME_INVOKE;
if (exc) {
diff --git a/modules/mono/utils/macros.h b/modules/mono/utils/macros.h
index 40b47e8648..c801fb2f33 100644
--- a/modules/mono/utils/macros.h
+++ b/modules/mono/utils/macros.h
@@ -31,15 +31,17 @@
#ifndef UTIL_MACROS_H
#define UTIL_MACROS_H
+#define _GD_VARNAME_CONCAT_B(m_ignore, m_name) m_name
+#define _GD_VARNAME_CONCAT_A(m_a, m_b, m_c) _GD_VARNAME_CONCAT_B(hello there, m_a##m_b##m_c)
+#define _GD_VARNAME_CONCAT(m_a, m_b, m_c) _GD_VARNAME_CONCAT_A(m_a, m_b, m_c)
+#define GD_UNIQUE_NAME(m_name) _GD_VARNAME_CONCAT(m_name, _, __COUNTER__)
+
// noreturn
#if __cpp_static_assert
#define GD_STATIC_ASSERT(m_cond) static_assert((m_cond), "Condition '" #m_cond "' failed")
#else
-#define _GD_STATIC_ASSERT_VARNAME_CONCAT_B(m_ignore, m_name) m_name
-#define _GD_STATIC_ASSERT_VARNAME_CONCAT_A(m_a, m_b) GD_STATIC_ASSERT_VARNAME_CONCAT_B(hello there, m_a##m_b)
-#define _GD_STATIC_ASSERT_VARNAME_CONCAT(m_a, m_b) GD_STATIC_ASSERT_VARNAME_CONCAT_A(m_a, m_b)
-#define GD_STATIC_ASSERT(m_cond) typedef int GD_STATIC_ASSERT_VARNAME_CONCAT(godot_static_assert_, __COUNTER__)[((m_cond) ? 1 : -1)]
+#define GD_STATIC_ASSERT(m_cond) typedef int GD_UNIQUE_NAME(godot_static_assert)[((m_cond) ? 1 : -1)]
#endif
#undef _NO_RETURN_
diff --git a/main/tests/test_io.h b/modules/mono/utils/mutex_utils.h
index ffebd05160..07d659b6eb 100644
--- a/main/tests/test_io.h
+++ b/modules/mono/utils/mutex_utils.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* test_io.h */
+/* mutex_utils.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,18 +28,40 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef TEST_IO_H
-#define TEST_IO_H
+#ifndef MUTEX_UTILS_H
+#define MUTEX_UTILS_H
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
+#include "core/error_macros.h"
+#include "core/os/mutex.h"
-#include "core/os/main_loop.h"
+#include "macros.h"
-namespace TestIO {
+class ScopedMutexLock {
+ Mutex *mutex;
-MainLoop *test();
-}
+public:
+ ScopedMutexLock(Mutex *mutex) {
+ this->mutex = mutex;
+#ifndef NO_THREADS
+#ifdef DEBUG_ENABLED
+ CRASH_COND(!mutex);
+#endif
+ this->mutex->lock();
+#endif
+ }
+ ~ScopedMutexLock() {
+#ifndef NO_THREADS
+#ifdef DEBUG_ENABLED
+ CRASH_COND(!mutex);
+#endif
+ mutex->unlock();
#endif
+ }
+};
+
+#define SCOPED_MUTEX_LOCK(m_mutex) ScopedMutexLock GD_UNIQUE_NAME(__scoped_mutex_lock__)(m_mutex);
+
+// TODO: Add version that receives a lambda instead, once C++11 is allowed
+
+#endif // MUTEX_UTILS_H
diff --git a/modules/squish/config.py b/modules/squish/config.py
index 098f1eafa9..1c8cd12a2d 100644
--- a/modules/squish/config.py
+++ b/modules/squish/config.py
@@ -1,5 +1,5 @@
def can_build(env, platform):
- return env['tools']
+ return True
def configure(env):
pass
diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp
index a08ac7bd28..4161a0f6ae 100644
--- a/modules/squish/image_compress_squish.cpp
+++ b/modules/squish/image_compress_squish.cpp
@@ -30,8 +30,6 @@
#include "image_compress_squish.h"
-#include "core/print_string.h"
-
#include <squish.h>
void image_decompress_squish(Image *p_image) {
@@ -76,6 +74,7 @@ void image_decompress_squish(Image *p_image) {
p_image->create(p_image->get_width(), p_image->get_height(), p_image->has_mipmaps(), target_format, data);
}
+#ifdef TOOLS_ENABLED
void image_compress_squish(Image *p_image, float p_lossy_quality, Image::CompressSource p_source) {
if (p_image->get_format() >= Image::FORMAT_DXT1)
@@ -204,3 +203,4 @@ void image_compress_squish(Image *p_image, float p_lossy_quality, Image::Compres
p_image->create(p_image->get_width(), p_image->get_height(), p_image->has_mipmaps(), target_format, data);
}
}
+#endif
diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h
index dfebdc955f..dd53f2787a 100644
--- a/modules/squish/image_compress_squish.h
+++ b/modules/squish/image_compress_squish.h
@@ -33,7 +33,9 @@
#include "core/image.h"
+#ifdef TOOLS_ENABLED
void image_compress_squish(Image *p_image, float p_lossy_quality, Image::CompressSource p_source);
+#endif
void image_decompress_squish(Image *p_image);
#endif // IMAGE_COMPRESS_SQUISH_H
diff --git a/modules/squish/register_types.cpp b/modules/squish/register_types.cpp
index d4ed676cce..9a5bb47f19 100644
--- a/modules/squish/register_types.cpp
+++ b/modules/squish/register_types.cpp
@@ -29,17 +29,14 @@
/*************************************************************************/
#include "register_types.h"
-
-#ifdef TOOLS_ENABLED
-
#include "image_compress_squish.h"
void register_squish_types() {
+#ifdef TOOLS_ENABLED
Image::set_compress_bc_func(image_compress_squish);
+#endif
Image::_image_decompress_bc = image_decompress_squish;
}
void unregister_squish_types() {}
-
-#endif
diff --git a/modules/squish/register_types.h b/modules/squish/register_types.h
index 00f5c345c4..9dbd69c46b 100644
--- a/modules/squish/register_types.h
+++ b/modules/squish/register_types.h
@@ -28,7 +28,5 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifdef TOOLS_ENABLED
void register_squish_types();
void unregister_squish_types();
-#endif
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 186e9e63b1..5b3b3a6769 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -981,6 +981,10 @@ bool VisualScript::is_tool() const {
return false;
}
+bool VisualScript::is_valid() const {
+ return true; //always valid
+}
+
ScriptLanguage *VisualScript::get_language() const {
return VisualScriptLanguage::singleton;
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index bd666447a3..cdc9159a73 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -341,6 +341,7 @@ public:
virtual Error reload(bool p_keep_state = false);
virtual bool is_tool() const;
+ virtual bool is_valid() const;
virtual ScriptLanguage *get_language() const;
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index afaa6a9b95..080d0643a2 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -3491,6 +3491,7 @@ VisualScriptEditor::VisualScriptEditor() {
edit_menu = memnew(MenuButton);
edit_menu->set_text(TTR("Edit"));
+ edit_menu->set_switch_on_hover(true);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/delete_selected"), EDIT_DELETE_NODES);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/toggle_breakpoint"), EDIT_TOGGLE_BREAKPOINT);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/find_node_type"), EDIT_FIND_NODE_TYPE);
diff --git a/modules/webp/SCsub b/modules/webp/SCsub
index 8a4307fbe1..d215f19cef 100644
--- a/modules/webp/SCsub
+++ b/modules/webp/SCsub
@@ -42,7 +42,6 @@ if env['builtin_libwebp']:
"dsp/dec_neon.c",
"dsp/dec_sse2.c",
"dsp/dec_sse41.c",
- "dsp/enc_avx2.c",
"dsp/enc.c",
"dsp/enc_mips32.c",
"dsp/enc_mips_dsp_r2.c",
@@ -90,7 +89,6 @@ if env['builtin_libwebp']:
"enc/backward_references_enc.c",
"enc/config_enc.c",
"enc/cost_enc.c",
- "enc/delta_palettization_enc.c",
"enc/filter_enc.c",
"enc/frame_enc.c",
"enc/histogram_enc.c",
diff --git a/platform/android/SCsub b/platform/android/SCsub
index da2219b9e4..6d5af99bc5 100644
--- a/platform/android/SCsub
+++ b/platform/android/SCsub
@@ -10,9 +10,7 @@ from detect import get_ndk_version
android_files = [
'os_android.cpp',
- 'godot_android.cpp',
'file_access_android.cpp',
- 'dir_access_android.cpp',
'audio_driver_opensl.cpp',
'file_access_jandroid.cpp',
'dir_access_jandroid.cpp',
@@ -25,7 +23,6 @@ android_files = [
thirdparty_files = [
'ifaddrs_android.cpp',
- 'android_native_app_glue.c',
'cpu-features.c',
]
diff --git a/platform/android/android_native_app_glue.c b/platform/android/android_native_app_glue.c
deleted file mode 100644
index 965f6284cd..0000000000
--- a/platform/android/android_native_app_glue.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- */
-
-#ifdef ANDROID_NATIVE_ACTIVITY
-
-#include <jni.h>
-
-
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/resource.h>
-
-#include "android_native_app_glue.h"
-#include <android/log.h>
-
-#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__))
-
-static void free_saved_state(struct android_app* android_app) {
- pthread_mutex_lock(&android_app->mutex);
- if (android_app->savedState != NULL) {
- free(android_app->savedState);
- android_app->savedState = NULL;
- android_app->savedStateSize = 0;
- }
- pthread_mutex_unlock(&android_app->mutex);
-}
-
-int8_t android_app_read_cmd(struct android_app* android_app) {
- int8_t cmd;
- if (read(android_app->msgread, &cmd, sizeof(cmd)) == sizeof(cmd)) {
- switch (cmd) {
- case APP_CMD_SAVE_STATE:
- free_saved_state(android_app);
- break;
- }
- return cmd;
- } else {
- LOGI("No data on command pipe!");
- }
- return -1;
-}
-
-static void print_cur_config(struct android_app* android_app) {
- char lang[2], country[2];
- AConfiguration_getLanguage(android_app->config, lang);
- AConfiguration_getCountry(android_app->config, country);
-
- LOGI("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d "
- "keys=%d nav=%d keysHid=%d navHid=%d sdk=%d size=%d long=%d "
- "modetype=%d modenight=%d",
- AConfiguration_getMcc(android_app->config),
- AConfiguration_getMnc(android_app->config),
- lang[0], lang[1], country[0], country[1],
- AConfiguration_getOrientation(android_app->config),
- AConfiguration_getTouchscreen(android_app->config),
- AConfiguration_getDensity(android_app->config),
- AConfiguration_getKeyboard(android_app->config),
- AConfiguration_getNavigation(android_app->config),
- AConfiguration_getKeysHidden(android_app->config),
- AConfiguration_getNavHidden(android_app->config),
- AConfiguration_getSdkVersion(android_app->config),
- AConfiguration_getScreenSize(android_app->config),
- AConfiguration_getScreenLong(android_app->config),
- AConfiguration_getUiModeType(android_app->config),
- AConfiguration_getUiModeNight(android_app->config));
-}
-
-void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) {
- switch (cmd) {
- case APP_CMD_INPUT_CHANGED:
- LOGI("APP_CMD_INPUT_CHANGED\n");
- pthread_mutex_lock(&android_app->mutex);
- if (android_app->inputQueue != NULL) {
- AInputQueue_detachLooper(android_app->inputQueue);
- }
- android_app->inputQueue = android_app->pendingInputQueue;
- if (android_app->inputQueue != NULL) {
- LOGI("Attaching input queue to looper");
- AInputQueue_attachLooper(android_app->inputQueue,
- android_app->looper, LOOPER_ID_INPUT, NULL,
- &android_app->inputPollSource);
- }
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- break;
-
- case APP_CMD_INIT_WINDOW:
- LOGI("APP_CMD_INIT_WINDOW\n");
- pthread_mutex_lock(&android_app->mutex);
- android_app->window = android_app->pendingWindow;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- break;
-
- case APP_CMD_TERM_WINDOW:
- LOGI("APP_CMD_TERM_WINDOW\n");
- pthread_cond_broadcast(&android_app->cond);
- break;
-
- case APP_CMD_RESUME:
- case APP_CMD_START:
- case APP_CMD_PAUSE:
- case APP_CMD_STOP:
- LOGI("activityState=%d\n", cmd);
- pthread_mutex_lock(&android_app->mutex);
- android_app->activityState = cmd;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- break;
-
- case APP_CMD_CONFIG_CHANGED:
- LOGI("APP_CMD_CONFIG_CHANGED\n");
- AConfiguration_fromAssetManager(android_app->config,
- android_app->activity->assetManager);
- print_cur_config(android_app);
- break;
-
- case APP_CMD_DESTROY:
- LOGI("APP_CMD_DESTROY\n");
- android_app->destroyRequested = 1;
- break;
- }
-}
-
-void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) {
- switch (cmd) {
- case APP_CMD_TERM_WINDOW:
- LOGI("APP_CMD_TERM_WINDOW\n");
- pthread_mutex_lock(&android_app->mutex);
- android_app->window = NULL;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- break;
-
- case APP_CMD_SAVE_STATE:
- LOGI("APP_CMD_SAVE_STATE\n");
- pthread_mutex_lock(&android_app->mutex);
- android_app->stateSaved = 1;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- break;
-
- case APP_CMD_RESUME:
- free_saved_state(android_app);
- break;
- }
-}
-
-void app_dummy() {
-
-}
-
-static void android_app_destroy(struct android_app* android_app) {
- LOGI("android_app_destroy!");
- free_saved_state(android_app);
- pthread_mutex_lock(&android_app->mutex);
- if (android_app->inputQueue != NULL) {
- AInputQueue_detachLooper(android_app->inputQueue);
- }
- AConfiguration_delete(android_app->config);
- android_app->destroyed = 1;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- // Can't touch android_app object after this.
-}
-
-static void process_input(struct android_app* app, struct android_poll_source* source) {
- AInputEvent* event = NULL;
- if (AInputQueue_getEvent(app->inputQueue, &event) >= 0) {
- LOGI("New input event: type=%d\n", AInputEvent_getType(event));
- if (AInputQueue_preDispatchEvent(app->inputQueue, event)) {
- return;
- }
- int32_t handled = 0;
- if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event);
- AInputQueue_finishEvent(app->inputQueue, event, handled);
- } else {
- LOGI("Failure reading next input event: %s\n", strerror(errno));
- }
-}
-
-static void process_cmd(struct android_app* app, struct android_poll_source* source) {
- int8_t cmd = android_app_read_cmd(app);
- android_app_pre_exec_cmd(app, cmd);
- if (app->onAppCmd != NULL) app->onAppCmd(app, cmd);
- android_app_post_exec_cmd(app, cmd);
-}
-
-static void* android_app_entry(void* param) {
- struct android_app* android_app = (struct android_app*)param;
-
- android_app->config = AConfiguration_new();
- AConfiguration_fromAssetManager(android_app->config, android_app->activity->assetManager);
-
- print_cur_config(android_app);
-
- android_app->cmdPollSource.id = LOOPER_ID_MAIN;
- android_app->cmdPollSource.app = android_app;
- android_app->cmdPollSource.process = process_cmd;
- android_app->inputPollSource.id = LOOPER_ID_INPUT;
- android_app->inputPollSource.app = android_app;
- android_app->inputPollSource.process = process_input;
-
- ALooper* looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
- ALooper_addFd(looper, android_app->msgread, LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT, NULL,
- &android_app->cmdPollSource);
- android_app->looper = looper;
-
- pthread_mutex_lock(&android_app->mutex);
- android_app->running = 1;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
-
- android_main(android_app);
-
- android_app_destroy(android_app);
- return NULL;
-}
-
-// --------------------------------------------------------------------
-// Native activity interaction (called from main thread)
-// --------------------------------------------------------------------
-
-static struct android_app* android_app_create(ANativeActivity* activity,
- void* savedState, size_t savedStateSize) {
- struct android_app* android_app = (struct android_app*)malloc(sizeof(struct android_app));
- memset(android_app, 0, sizeof(struct android_app));
- android_app->activity = activity;
-
- pthread_mutex_init(&android_app->mutex, NULL);
- pthread_cond_init(&android_app->cond, NULL);
-
- if (savedState != NULL) {
- android_app->savedState = malloc(savedStateSize);
- android_app->savedStateSize = savedStateSize;
- memcpy(android_app->savedState, savedState, savedStateSize);
- }
-
- int msgpipe[2];
- if (pipe(msgpipe)) {
- LOGI("could not create pipe: %s", strerror(errno));
- }
- android_app->msgread = msgpipe[0];
- android_app->msgwrite = msgpipe[1];
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- pthread_create(&android_app->thread, &attr, android_app_entry, android_app);
-
- // Wait for thread to start.
- pthread_mutex_lock(&android_app->mutex);
- while (!android_app->running) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
- pthread_mutex_unlock(&android_app->mutex);
-
- return android_app;
-}
-
-static void android_app_write_cmd(struct android_app* android_app, int8_t cmd) {
- if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) {
- LOGI("Failure writing android_app cmd: %s\n", strerror(errno));
- }
-}
-
-static void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) {
- pthread_mutex_lock(&android_app->mutex);
- android_app->pendingInputQueue = inputQueue;
- android_app_write_cmd(android_app, APP_CMD_INPUT_CHANGED);
- while (android_app->inputQueue != android_app->pendingInputQueue) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
- pthread_mutex_unlock(&android_app->mutex);
-}
-
-static void android_app_set_window(struct android_app* android_app, ANativeWindow* window) {
- pthread_mutex_lock(&android_app->mutex);
- if (android_app->pendingWindow != NULL) {
- android_app_write_cmd(android_app, APP_CMD_TERM_WINDOW);
- }
- android_app->pendingWindow = window;
- if (window != NULL) {
- android_app_write_cmd(android_app, APP_CMD_INIT_WINDOW);
- }
- while (android_app->window != android_app->pendingWindow) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
- pthread_mutex_unlock(&android_app->mutex);
-}
-
-static void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) {
- pthread_mutex_lock(&android_app->mutex);
- android_app_write_cmd(android_app, cmd);
- while (android_app->activityState != cmd) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
- pthread_mutex_unlock(&android_app->mutex);
-}
-
-static void android_app_free(struct android_app* android_app) {
- pthread_mutex_lock(&android_app->mutex);
- android_app_write_cmd(android_app, APP_CMD_DESTROY);
- while (!android_app->destroyed) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
- pthread_mutex_unlock(&android_app->mutex);
-
- close(android_app->msgread);
- close(android_app->msgwrite);
- pthread_cond_destroy(&android_app->cond);
- pthread_mutex_destroy(&android_app->mutex);
- free(android_app);
-}
-
-static void onDestroy(ANativeActivity* activity) {
- LOGI("Destroy: %p\n", activity);
- android_app_free((struct android_app*)activity->instance);
-}
-
-static void onStart(ANativeActivity* activity) {
- LOGI("Start: %p\n", activity);
- android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_START);
-}
-
-static void onResume(ANativeActivity* activity) {
- LOGI("Resume: %p\n", activity);
- android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_RESUME);
-}
-
-static void* onSaveInstanceState(ANativeActivity* activity, size_t* outLen) {
- struct android_app* android_app = (struct android_app*)activity->instance;
- void* savedState = NULL;
-
- LOGI("SaveInstanceState: %p\n", activity);
- pthread_mutex_lock(&android_app->mutex);
- android_app->stateSaved = 0;
- android_app_write_cmd(android_app, APP_CMD_SAVE_STATE);
- while (!android_app->stateSaved) {
- pthread_cond_wait(&android_app->cond, &android_app->mutex);
- }
-
- if (android_app->savedState != NULL) {
- savedState = android_app->savedState;
- *outLen = android_app->savedStateSize;
- android_app->savedState = NULL;
- android_app->savedStateSize = 0;
- }
-
- pthread_mutex_unlock(&android_app->mutex);
-
- return savedState;
-}
-
-static void onPause(ANativeActivity* activity) {
- LOGI("Pause: %p\n", activity);
- android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_PAUSE);
-}
-
-static void onStop(ANativeActivity* activity) {
- LOGI("Stop: %p\n", activity);
- android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_STOP);
-}
-
-static void onConfigurationChanged(ANativeActivity* activity) {
- struct android_app* android_app = (struct android_app*)activity->instance;
- LOGI("ConfigurationChanged: %p\n", activity);
- android_app_write_cmd(android_app, APP_CMD_CONFIG_CHANGED);
-}
-
-static void onLowMemory(ANativeActivity* activity) {
- struct android_app* android_app = (struct android_app*)activity->instance;
- LOGI("LowMemory: %p\n", activity);
- android_app_write_cmd(android_app, APP_CMD_LOW_MEMORY);
-}
-
-static void onWindowFocusChanged(ANativeActivity* activity, int focused) {
- LOGI("WindowFocusChanged: %p -- %d\n", activity, focused);
- android_app_write_cmd((struct android_app*)activity->instance,
- focused ? APP_CMD_GAINED_FOCUS : APP_CMD_LOST_FOCUS);
-}
-
-static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) {
- LOGI("NativeWindowCreated: %p -- %p\n", activity, window);
- android_app_set_window((struct android_app*)activity->instance, window);
-}
-
-static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) {
- LOGI("NativeWindowDestroyed: %p -- %p\n", activity, window);
- android_app_set_window((struct android_app*)activity->instance, NULL);
-}
-
-static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) {
- LOGI("InputQueueCreated: %p -- %p\n", activity, queue);
- android_app_set_input((struct android_app*)activity->instance, queue);
-}
-
-static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) {
- LOGI("InputQueueDestroyed: %p -- %p\n", activity, queue);
- android_app_set_input((struct android_app*)activity->instance, NULL);
-}
-
-void ANativeActivity_onCreate(ANativeActivity* activity,
- void* savedState, size_t savedStateSize) {
- LOGI("Creating: %p\n", activity);
- activity->callbacks->onDestroy = onDestroy;
- activity->callbacks->onStart = onStart;
- activity->callbacks->onResume = onResume;
- activity->callbacks->onSaveInstanceState = onSaveInstanceState;
- activity->callbacks->onPause = onPause;
- activity->callbacks->onStop = onStop;
- activity->callbacks->onConfigurationChanged = onConfigurationChanged;
- activity->callbacks->onLowMemory = onLowMemory;
- activity->callbacks->onWindowFocusChanged = onWindowFocusChanged;
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreated;
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed;
- activity->callbacks->onInputQueueCreated = onInputQueueCreated;
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed;
-
- activity->instance = android_app_create(activity, savedState, savedStateSize);
-}
-#endif
diff --git a/platform/android/android_native_app_glue.h b/platform/android/android_native_app_glue.h
deleted file mode 100644
index 36278d4c66..0000000000
--- a/platform/android/android_native_app_glue.h
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- */
-
-#ifndef _ANDROID_NATIVE_APP_GLUE_H
-#define _ANDROID_NATIVE_APP_GLUE_H
-#ifdef ANDROID_NATIVE_ACTIVITY
-
-#include <poll.h>
-#include <pthread.h>
-#include <sched.h>
-
-#include <android/configuration.h>
-#include <android/looper.h>
-#include <android/native_activity.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * The native activity interface provided by <android/native_activity.h>
- * is based on a set of application-provided callbacks that will be called
- * by the Activity's main thread when certain events occur.
- *
- * This means that each one of this callbacks _should_ _not_ block, or they
- * risk having the system force-close the application. This programming
- * model is direct, lightweight, but constraining.
- *
- * The 'threaded_native_app' static library is used to provide a different
- * execution model where the application can implement its own main event
- * loop in a different thread instead. Here's how it works:
- *
- * 1/ The application must provide a function named "android_main()" that
- * will be called when the activity is created, in a new thread that is
- * distinct from the activity's main thread.
- *
- * 2/ android_main() receives a pointer to a valid "android_app" structure
- * that contains references to other important objects, e.g. the
- * ANativeActivity obejct instance the application is running in.
- *
- * 3/ the "android_app" object holds an ALooper instance that already
- * listens to two important things:
- *
- * - activity lifecycle events (e.g. "pause", "resume"). See APP_CMD_XXX
- * declarations below.
- *
- * - input events coming from the AInputQueue attached to the activity.
- *
- * Each of these correspond to an ALooper identifier returned by
- * ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT,
- * respectively.
- *
- * Your application can use the same ALooper to listen to additional
- * file-descriptors. They can either be callback based, or with return
- * identifiers starting with LOOPER_ID_USER.
- *
- * 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event,
- * the returned data will point to an android_poll_source structure. You
- * can call the process() function on it, and fill in android_app->onAppCmd
- * and android_app->onInputEvent to be called for your own processing
- * of the event.
- *
- * Alternatively, you can call the low-level functions to read and process
- * the data directly... look at the process_cmd() and process_input()
- * implementations in the glue to see how to do this.
- *
- * See the sample named "native-activity" that comes with the NDK with a
- * full usage example. Also look at the JavaDoc of NativeActivity.
- */
-
-struct android_app;
-
-/**
- * Data associated with an ALooper fd that will be returned as the "outData"
- * when that source has data ready.
- */
-struct android_poll_source {
- // The identifier of this source. May be LOOPER_ID_MAIN or
- // LOOPER_ID_INPUT.
- int32_t id;
-
- // The android_app this ident is associated with.
- struct android_app* app;
-
- // Function to call to perform the standard processing of data from
- // this source.
- void (*process)(struct android_app* app, struct android_poll_source* source);
-};
-
-/**
- * This is the interface for the standard glue code of a threaded
- * application. In this model, the application's code is running
- * in its own thread separate from the main thread of the process.
- * It is not required that this thread be associated with the Java
- * VM, although it will need to be in order to make JNI calls any
- * Java objects.
- */
-struct android_app {
- // The application can place a pointer to its own state object
- // here if it likes.
- void* userData;
-
- // Fill this in with the function to process main app commands (APP_CMD_*)
- void (*onAppCmd)(struct android_app* app, int32_t cmd);
-
- // Fill this in with the function to process input events. At this point
- // the event has already been pre-dispatched, and it will be finished upon
- // return. Return 1 if you have handled the event, 0 for any default
- // dispatching.
- int32_t (*onInputEvent)(struct android_app* app, AInputEvent* event);
-
- // The ANativeActivity object instance that this app is running in.
- ANativeActivity* activity;
-
- // The current configuration the app is running in.
- AConfiguration* config;
-
- // This is the last instance's saved state, as provided at creation time.
- // It is NULL if there was no state. You can use this as you need; the
- // memory will remain around until you call android_app_exec_cmd() for
- // APP_CMD_RESUME, at which point it will be freed and savedState set to NULL.
- // These variables should only be changed when processing a APP_CMD_SAVE_STATE,
- // at which point they will be initialized to NULL and you can malloc your
- // state and place the information here. In that case the memory will be
- // freed for you later.
- void* savedState;
- size_t savedStateSize;
-
- // The ALooper associated with the app's thread.
- ALooper* looper;
-
- // When non-NULL, this is the input queue from which the app will
- // receive user input events.
- AInputQueue* inputQueue;
-
- // When non-NULL, this is the window surface that the app can draw in.
- ANativeWindow* window;
-
- // Current content rectangle of the window; this is the area where the
- // window's content should be placed to be seen by the user.
- ARect contentRect;
-
- // Current state of the app's activity. May be either APP_CMD_START,
- // APP_CMD_RESUME, APP_CMD_PAUSE, or APP_CMD_STOP; see below.
- int activityState;
-
- // This is non-zero when the application's NativeActivity is being
- // destroyed and waiting for the app thread to complete.
- int destroyRequested;
-
- // -------------------------------------------------
- // Below are "private" implementation of the glue code.
-
- pthread_mutex_t mutex;
- pthread_cond_t cond;
-
- int msgread;
- int msgwrite;
-
- pthread_t thread;
-
- struct android_poll_source cmdPollSource;
- struct android_poll_source inputPollSource;
-
- int running;
- int stateSaved;
- int destroyed;
- int redrawNeeded;
- AInputQueue* pendingInputQueue;
- ANativeWindow* pendingWindow;
- ARect pendingContentRect;
-};
-
-enum {
- /**
- * Looper data ID of commands coming from the app's main thread, which
- * is returned as an identifier from ALooper_pollOnce(). The data for this
- * identifier is a pointer to an android_poll_source structure.
- * These can be retrieved and processed with android_app_read_cmd()
- * and android_app_exec_cmd().
- */
- LOOPER_ID_MAIN = 1,
-
- /**
- * Looper data ID of events coming from the AInputQueue of the
- * application's window, which is returned as an identifier from
- * ALooper_pollOnce(). The data for this identifier is a pointer to an
- * android_poll_source structure. These can be read via the inputQueue
- * object of android_app.
- */
- LOOPER_ID_INPUT = 2,
-
- /**
- * Start of user-defined ALooper identifiers.
- */
- LOOPER_ID_USER = 3,
-};
-
-enum {
- /**
- * Command from main thread: the AInputQueue has changed. Upon processing
- * this command, android_app->inputQueue will be updated to the new queue
- * (or NULL).
- */
- APP_CMD_INPUT_CHANGED,
-
- /**
- * Command from main thread: a new ANativeWindow is ready for use. Upon
- * receiving this command, android_app->window will contain the new window
- * surface.
- */
- APP_CMD_INIT_WINDOW,
-
- /**
- * Command from main thread: the existing ANativeWindow needs to be
- * terminated. Upon receiving this command, android_app->window still
- * contains the existing window; after calling android_app_exec_cmd
- * it will be set to NULL.
- */
- APP_CMD_TERM_WINDOW,
-
- /**
- * Command from main thread: the current ANativeWindow has been resized.
- * Please redraw with its new size.
- */
- APP_CMD_WINDOW_RESIZED,
-
- /**
- * Command from main thread: the system needs that the current ANativeWindow
- * be redrawn. You should redraw the window before handing this to
- * android_app_exec_cmd() in order to avoid transient drawing glitches.
- */
- APP_CMD_WINDOW_REDRAW_NEEDED,
-
- /**
- * Command from main thread: the content area of the window has changed,
- * such as from the soft input window being shown or hidden. You can
- * find the new content rect in android_app::contentRect.
- */
- APP_CMD_CONTENT_RECT_CHANGED,
-
- /**
- * Command from main thread: the app's activity window has gained
- * input focus.
- */
- APP_CMD_GAINED_FOCUS,
-
- /**
- * Command from main thread: the app's activity window has lost
- * input focus.
- */
- APP_CMD_LOST_FOCUS,
-
- /**
- * Command from main thread: the current device configuration has changed.
- */
- APP_CMD_CONFIG_CHANGED,
-
- /**
- * Command from main thread: the system is running low on memory.
- * Try to reduce your memory use.
- */
- APP_CMD_LOW_MEMORY,
-
- /**
- * Command from main thread: the app's activity has been started.
- */
- APP_CMD_START,
-
- /**
- * Command from main thread: the app's activity has been resumed.
- */
- APP_CMD_RESUME,
-
- /**
- * Command from main thread: the app should generate a new saved state
- * for itself, to restore from later if needed. If you have saved state,
- * allocate it with malloc and place it in android_app.savedState with
- * the size in android_app.savedStateSize. The will be freed for you
- * later.
- */
- APP_CMD_SAVE_STATE,
-
- /**
- * Command from main thread: the app's activity has been paused.
- */
- APP_CMD_PAUSE,
-
- /**
- * Command from main thread: the app's activity has been stopped.
- */
- APP_CMD_STOP,
-
- /**
- * Command from main thread: the app's activity is being destroyed,
- * and waiting for the app thread to clean up and exit before proceeding.
- */
- APP_CMD_DESTROY,
-};
-
-/**
- * Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next
- * app command message.
- */
-int8_t android_app_read_cmd(struct android_app* android_app);
-
-/**
- * Call with the command returned by android_app_read_cmd() to do the
- * initial pre-processing of the given command. You can perform your own
- * actions for the command after calling this function.
- */
-void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd);
-
-/**
- * Call with the command returned by android_app_read_cmd() to do the
- * final post-processing of the given command. You must have done your own
- * actions for the command before calling this function.
- */
-void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd);
-
-/**
- * Dummy function you can call to ensure glue code isn't stripped.
- */
-void app_dummy();
-
-/**
- * This is the function that application code must implement, representing
- * the main entry to the app.
- */
-extern void android_main(struct android_app* app);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ANDROID_NATIVE_APP_GLUE_H */
-#endif
diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp
index 4fab40d534..b75a4a3869 100644
--- a/platform/android/audio_driver_jandroid.cpp
+++ b/platform/android/audio_driver_jandroid.cpp
@@ -34,8 +34,6 @@
#include "core/project_settings.h"
#include "thread_jandroid.h"
-#ifndef ANDROID_NATIVE_ACTIVITY
-
AudioDriverAndroid *AudioDriverAndroid::s_ad = NULL;
jobject AudioDriverAndroid::io;
@@ -204,5 +202,3 @@ AudioDriverAndroid::AudioDriverAndroid() {
s_ad = this;
active = false;
}
-
-#endif
diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h
index 763f0e9b5a..3c51ed746d 100644
--- a/platform/android/audio_driver_jandroid.h
+++ b/platform/android/audio_driver_jandroid.h
@@ -33,8 +33,6 @@
#include "servers/audio_server.h"
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "java_glue.h"
class AudioDriverAndroid : public AudioDriver {
@@ -78,5 +76,4 @@ public:
AudioDriverAndroid();
};
-#endif
#endif // AUDIO_DRIVER_ANDROID_H
diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp
deleted file mode 100644
index 402da4527e..0000000000
--- a/platform/android/dir_access_android.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/*************************************************************************/
-/* dir_access_android.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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 ANDROID_NATIVE_ACTIVITY
-#include "dir_access_android.h"
-#include "file_access_android.h"
-
-DirAccess *DirAccessAndroid::create_fs() {
-
- return memnew(DirAccessAndroid);
-}
-
-Error DirAccessAndroid::list_dir_begin() {
-
- list_dir_end();
-
- AAssetDir *aad = AAssetManager_openDir(FileAccessAndroid::asset_manager, current_dir.utf8().get_data());
- if (!aad)
- return ERR_CANT_OPEN; //nothing
-
- return OK;
-}
-
-String DirAccessAndroid::get_next() {
-
- const char *fn = AAssetDir_getNextFileName(aad);
- if (!fn)
- return "";
- String s;
- s.parse_utf8(fn);
- current = s;
- return s;
-}
-
-bool DirAccessAndroid::current_is_dir() const {
-
- String sd;
- if (current_dir == "")
- sd = current;
- else
- sd = current_dir + "/" + current;
-
- AAssetDir *aad2 = AAssetManager_openDir(FileAccessAndroid::asset_manager, sd.utf8().get_data());
- if (aad2) {
-
- AAssetDir_close(aad2);
- return true;
- }
-
- return false;
-}
-
-bool DirAccessAndroid::current_is_hidden() const {
- return current != "." && current != ".." && current.begins_with(".");
-}
-
-void DirAccessAndroid::list_dir_end() {
-
- if (aad == NULL)
- return;
-
- AAssetDir_close(aad);
- aad = NULL;
-}
-
-int DirAccessAndroid::get_drive_count() {
-
- return 0;
-}
-
-String DirAccessAndroid::get_drive(int p_drive) {
-
- return "";
-}
-
-Error DirAccessAndroid::change_dir(String p_dir) {
-
- p_dir = p_dir.simplify_path();
-
- if (p_dir == "" || p_dir == "." || (p_dir == ".." && current_dir == ""))
- return OK;
-
- String new_dir;
-
- if (p_dir.begins_with("/"))
- new_dir = p_dir.substr(1, p_dir.length());
- else if (p_dir.begins_with("res://"))
- new_dir = p_dir.substr(6, p_dir.length());
- else //relative
- new_dir = new_dir + "/" + p_dir;
-
- //test if newdir exists
- new_dir = new_dir.simplify_path();
-
- AAssetDir *aad = AAssetManager_openDir(FileAccessAndroid::asset_manager, new_dir.utf8().get_data());
- if (aad) {
-
- current_dir = new_dir;
- AAssetDir_close(aad);
- return OK;
- }
-
- return ERR_INVALID_PARAMETER;
-}
-
-String DirAccessAndroid::get_current_dir() {
-
- return "/" + current_dir;
-}
-
-bool DirAccessAndroid::file_exists(String p_file) {
-
- String sd;
- if (current_dir == "")
- sd = p_file;
- else
- sd = current_dir + "/" + p_file;
-
- AAsset *a = AAssetManager_open(FileAccessAndroid::asset_manager, sd.utf8().get_data(), AASSET_MODE_STREAMING);
- if (a) {
- AAsset_close(a);
- return true;
- }
-
- return false;
-}
-
-Error DirAccessAndroid::make_dir(String p_dir) {
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-Error DirAccessAndroid::rename(String p_from, String p_to) {
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-Error DirAccessAndroid::remove(String p_name) {
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-//FileType get_file_type() const;
-size_t DirAccessAndroid::get_space_left() {
-
- return 0;
-}
-
-void DirAccessAndroid::make_default() {
-
- instance_func = create_fs;
-}
-
-DirAccessAndroid::DirAccessAndroid() {
-
- aad = NULL;
-}
-
-DirAccessAndroid::~DirAccessAndroid() {
-
- list_dir_end();
-}
-#endif
diff --git a/platform/android/dir_access_android.h b/platform/android/dir_access_android.h
deleted file mode 100644
index 3ac0bd6332..0000000000
--- a/platform/android/dir_access_android.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*************************************************************************/
-/* dir_access_android.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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 DIR_ACCESS_ANDROID_H
-#define DIR_ACCESS_ANDROID_H
-
-#ifdef ANDROID_NATIVE_ACTIVITY
-
-#include "core/os/dir_access.h"
-#include <android/asset_manager.h>
-#include <android/log.h>
-#include <android_native_app_glue.h>
-#include <stdio.h>
-
-class DirAccessAndroid : public DirAccess {
-
- AAssetDir *aad;
- String current_dir;
- String current;
-
- static DirAccess *create_fs();
-
-public:
- virtual Error list_dir_begin(); ///< This starts dir listing
- virtual String get_next();
- virtual bool current_is_dir() const;
- virtual bool current_is_hidden() const;
- virtual void list_dir_end(); ///<
-
- virtual int get_drive_count();
- virtual String get_drive(int p_drive);
-
- virtual Error change_dir(String p_dir); ///< can be relative or absolute, return false on success
- virtual String get_current_dir(); ///< return current dir location
-
- virtual bool file_exists(String p_file);
-
- virtual Error make_dir(String p_dir);
-
- virtual Error rename(String p_from, String p_to);
- virtual Error remove(String p_name);
-
- //virtual FileType get_file_type() const;
- size_t get_space_left();
-
- static void make_default();
-
- DirAccessAndroid();
- ~DirAccessAndroid();
-};
-
-#endif
-#endif // DIR_ACCESS_ANDROID_H
diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp
index 6a95277585..679a13217f 100644
--- a/platform/android/dir_access_jandroid.cpp
+++ b/platform/android/dir_access_jandroid.cpp
@@ -28,8 +28,6 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "dir_access_jandroid.h"
#include "core/print_string.h"
#include "file_access_jandroid.h"
@@ -245,4 +243,3 @@ DirAccessJAndroid::~DirAccessJAndroid() {
list_dir_end();
}
-#endif
diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h
index 1653fb0aa5..ea1e11a4f1 100644
--- a/platform/android/dir_access_jandroid.h
+++ b/platform/android/dir_access_jandroid.h
@@ -31,8 +31,6 @@
#ifndef DIR_ACCESS_JANDROID_H
#define DIR_ACCESS_JANDROID_H
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "core/os/dir_access.h"
#include "java_glue.h"
#include <stdio.h>
@@ -87,4 +85,3 @@ public:
};
#endif // DIR_ACCESS_JANDROID_H
-#endif
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 3766f732e4..a3b5b6dd58 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -672,10 +672,13 @@ class EditorExportAndroid : public EditorExportPlatform {
aperms++;
}
- for (int i = 0; i < MAX_USER_PERMISSIONS; i++) {
- String user_perm = p_preset->get("user_permissions/" + itos(i));
- if (user_perm.strip_edges() != "" && user_perm.strip_edges() != "False")
- perms.push_back(user_perm.strip_edges());
+ PoolStringArray user_perms = p_preset->get("permissions/custom_permissions");
+
+ for (int i = 0; i < user_perms.size(); i++) {
+ String user_perm = user_perms[i].strip_edges();
+ if (!user_perm.empty()) {
+ perms.push_back(user_perm);
+ }
}
if (p_give_internet) {
@@ -1104,10 +1107,6 @@ class EditorExportAndroid : public EditorExportPlatform {
}
public:
- enum {
- MAX_USER_PERMISSIONS = 20
- };
-
typedef Error (*EditorExportSaveFunction)(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total);
public:
@@ -1169,17 +1168,14 @@ public:
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "architectures/" + abi), is_default));
}
+ r_options->push_back(ExportOption(PropertyInfo(Variant::POOL_STRING_ARRAY, "permissions/custom_permissions"), PoolStringArray()));
+
const char **perms = android_perms;
while (*perms) {
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "permissions/" + String(*perms).to_lower()), false));
perms++;
}
-
- for (int i = 0; i < MAX_USER_PERMISSIONS; i++) {
-
- r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "user_permissions/" + itos(i)), false));
- }
}
virtual String get_name() const {
diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp
index 573200bcf9..bba45ffc1d 100644
--- a/platform/android/file_access_jandroid.cpp
+++ b/platform/android/file_access_jandroid.cpp
@@ -28,8 +28,6 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "file_access_jandroid.h"
#include "core/os/os.h"
#include "thread_jandroid.h"
@@ -212,5 +210,3 @@ FileAccessJAndroid::~FileAccessJAndroid() {
if (is_open())
close();
}
-
-#endif
diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h
index 39c201ba85..98486702ab 100644
--- a/platform/android/file_access_jandroid.h
+++ b/platform/android/file_access_jandroid.h
@@ -31,8 +31,6 @@
#ifndef FILE_ACCESS_JANDROID_H
#define FILE_ACCESS_JANDROID_H
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "core/os/file_access.h"
#include "java_glue.h"
class FileAccessJAndroid : public FileAccess {
@@ -81,6 +79,4 @@ public:
~FileAccessJAndroid();
};
-#endif
-
#endif // FILE_ACCESS_JANDROID_H
diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp
deleted file mode 100644
index c46c6f7804..0000000000
--- a/platform/android/godot_android.cpp
+++ /dev/null
@@ -1,937 +0,0 @@
-/*************************************************************************/
-/* godot_android.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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 ANDROID_NATIVE_ACTIVITY
-
-#include "core/engine.h"
-#include "core/project_settings.h"
-#include "file_access_android.h"
-#include "main/main.h"
-#include "os_android.h"
-
-#include <EGL/egl.h>
-#include <android/log.h>
-#include <android/sensor.h>
-#include <android/window.h>
-#include <android_native_app_glue.h>
-#include <errno.h>
-#include <jni.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "godot", __VA_ARGS__))
-#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "godot", __VA_ARGS__))
-
-extern "C" {
-JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerSingleton(JNIEnv *env, jobject obj, jstring name, jobject p_object);
-JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerMethod(JNIEnv *env, jobject obj, jstring sname, jstring name, jstring ret, jobjectArray args);
-JNIEXPORT jstring JNICALL Java_org_godotengine_godot_Godot_getGlobal(JNIEnv *env, jobject obj, jstring path);
-};
-
-class JNISingleton : public Object {
-
- GDCLASS(JNISingleton, Object);
-
- struct MethodData {
-
- jmethodID method;
- Variant::Type ret_type;
- Vector<Variant::Type> argtypes;
- };
-
- jobject instance;
- Map<StringName, MethodData> method_map;
- JNIEnv *env;
-
-public:
- void update_env(JNIEnv *p_env) { env = p_env; }
-
- virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
-
- r_error.error = Variant::CallError::CALL_OK;
-
- Map<StringName, MethodData>::Element *E = method_map.find(p_method);
- if (!E) {
-
- r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
- return Variant();
- }
-
- int ac = E->get().argtypes.size();
- if (ac < p_argcount) {
-
- r_error.error = Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
- r_error.argument = ac;
- return Variant();
- }
-
- if (ac > p_argcount) {
-
- r_error.error = Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS;
- r_error.argument = ac;
- return Variant();
- }
-
- for (int i = 0; i < p_argcount; i++) {
-
- if (!Variant::can_convert(p_args[i]->get_type(), E->get().argtypes[i])) {
-
- r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
- r_error.argument = i;
- r_error.expected = E->get().argtypes[i];
- }
- }
-
- jvalue *v = NULL;
-
- if (p_argcount) {
-
- v = (jvalue *)alloca(sizeof(jvalue) * p_argcount);
- }
-
- for (int i = 0; i < p_argcount; i++) {
-
- switch (E->get().argtypes[i]) {
-
- case Variant::BOOL: {
-
- v[i].z = *p_args[i];
- } break;
- case Variant::INT: {
-
- v[i].i = *p_args[i];
- } break;
- case Variant::REAL: {
-
- v[i].f = *p_args[i];
- } break;
- case Variant::STRING: {
-
- String s = *p_args[i];
- jstring jStr = env->NewStringUTF(s.utf8().get_data());
- v[i].l = jStr;
- } break;
- case Variant::STRING_ARRAY: {
-
- PoolVector<String> sarray = *p_args[i];
- jobjectArray arr = env->NewObjectArray(sarray.size(), env->FindClass("java/lang/String"), env->NewStringUTF(""));
-
- for (int j = 0; j < sarray.size(); j++) {
-
- env->SetObjectArrayElement(arr, j, env->NewStringUTF(sarray[i].utf8().get_data()));
- }
- v[i].l = arr;
-
- } break;
- case Variant::INT_ARRAY: {
-
- PoolVector<int> array = *p_args[i];
- jintArray arr = env->NewIntArray(array.size());
- PoolVector<int>::Read r = array.read();
- env->SetIntArrayRegion(arr, 0, array.size(), r.ptr());
- v[i].l = arr;
-
- } break;
- case Variant::REAL_ARRAY: {
-
- PoolVector<float> array = *p_args[i];
- jfloatArray arr = env->NewFloatArray(array.size());
- PoolVector<float>::Read r = array.read();
- env->SetFloatArrayRegion(arr, 0, array.size(), r.ptr());
- v[i].l = arr;
-
- } break;
- default: {
-
- ERR_FAIL_V(Variant());
- } break;
- }
- }
-
- Variant ret;
-
- switch (E->get().ret_type) {
-
- case Variant::NIL: {
-
- env->CallVoidMethodA(instance, E->get().method, v);
- } break;
- case Variant::BOOL: {
-
- ret = env->CallBooleanMethodA(instance, E->get().method, v);
- } break;
- case Variant::INT: {
-
- ret = env->CallIntMethodA(instance, E->get().method, v);
- } break;
- case Variant::REAL: {
-
- ret = env->CallFloatMethodA(instance, E->get().method, v);
- } break;
- case Variant::STRING: {
-
- jobject o = env->CallObjectMethodA(instance, E->get().method, v);
- String singname = env->GetStringUTFChars((jstring)o, NULL);
- } break;
- case Variant::STRING_ARRAY: {
-
- jobjectArray arr = (jobjectArray)env->CallObjectMethodA(instance, E->get().method, v);
-
- int stringCount = env->GetArrayLength(arr);
- PoolVector<String> sarr;
-
- for (int i = 0; i < stringCount; i++) {
- jstring string = (jstring)env->GetObjectArrayElement(arr, i);
- const char *rawString = env->GetStringUTFChars(string, 0);
- sarr.push_back(String(rawString));
- }
-
- ret = sarr;
-
- } break;
- case Variant::INT_ARRAY: {
-
- jintArray arr = (jintArray)env->CallObjectMethodA(instance, E->get().method, v);
-
- int fCount = env->GetArrayLength(arr);
- PoolVector<int> sarr;
- sarr.resize(fCount);
-
- PoolVector<int>::Write w = sarr.write();
- env->GetIntArrayRegion(arr, 0, fCount, w.ptr());
- w = PoolVector<int>::Write();
- ret = sarr;
- } break;
- case Variant::REAL_ARRAY: {
-
- jfloatArray arr = (jfloatArray)env->CallObjectMethodA(instance, E->get().method, v);
-
- int fCount = env->GetArrayLength(arr);
- PoolVector<float> sarr;
- sarr.resize(fCount);
-
- PoolVector<float>::Write w = sarr.write();
- env->GetFloatArrayRegion(arr, 0, fCount, w.ptr());
- w = PoolVector<float>::Write();
- ret = sarr;
- } break;
- default: {
-
- ERR_FAIL_V(Variant());
- } break;
- }
-
- return ret;
- }
-
- jobject get_instance() const {
-
- return instance;
- }
- void set_instance(jobject p_instance) {
-
- instance = p_instance;
- }
-
- void add_method(const StringName &p_name, jmethodID p_method, const Vector<Variant::Type> &p_args, Variant::Type p_ret_type) {
-
- MethodData md;
- md.method = p_method;
- md.argtypes = p_args;
- md.ret_type = p_ret_type;
- method_map[p_name] = md;
- }
-
- JNISingleton() {}
-};
-
-//JNIEnv *JNISingleton::env=NULL;
-
-static HashMap<String, JNISingleton *> jni_singletons;
-
-struct engine {
- struct android_app *app;
- OS_Android *os;
- JNIEnv *jni;
-
- ASensorManager *sensorManager;
- const ASensor *accelerometerSensor;
- const ASensor *magnetometerSensor;
- const ASensor *gyroscopeSensor;
- ASensorEventQueue *sensorEventQueue;
-
- bool display_active;
- bool requested_quit;
- int animating;
- EGLDisplay display;
- EGLSurface surface;
- EGLContext context;
- int32_t width;
- int32_t height;
-};
-
-/**
- * Initialize an EGL context for the current display.
- */
-static int engine_init_display(struct engine *engine, bool p_gl2) {
- // initialize OpenGL ES and EGL
-
- /*
- * Here specify the attributes of the desired configuration.
- * Below, we select an EGLConfig with at least 8 bits per color
- * component compatible with on-screen windows
- */
- const EGLint gl2_attribs[] = {
- // EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
- EGL_BLUE_SIZE, 4,
- EGL_GREEN_SIZE, 4,
- EGL_RED_SIZE, 4,
- EGL_ALPHA_SIZE, 0,
- EGL_DEPTH_SIZE, 16,
- EGL_STENCIL_SIZE, EGL_DONT_CARE,
- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
- EGL_NONE
- };
-
- const EGLint gl1_attribs[] = {
- // EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
- EGL_BLUE_SIZE, 4,
- EGL_GREEN_SIZE, 4,
- EGL_RED_SIZE, 4,
- EGL_ALPHA_SIZE, 0,
- EGL_DEPTH_SIZE, 16,
- EGL_STENCIL_SIZE, EGL_DONT_CARE,
- EGL_NONE
- };
-
- const EGLint *attribs = p_gl2 ? gl2_attribs : gl1_attribs;
-
- EGLint w, h, dummy, format;
- EGLint numConfigs;
- EGLConfig config;
- EGLSurface surface;
- EGLContext context;
-
- EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-
- eglInitialize(display, 0, 0);
-
- /* Here, the application chooses the configuration it desires. In this
- * sample, we have a very simplified selection process, where we pick
- * the first EGLConfig that matches our criteria */
-
- eglChooseConfig(display, attribs, &config, 1, &numConfigs);
-
- LOGI("Num configs: %i\n", numConfigs);
-
- /* EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is
- * guaranteed to be accepted by ANativeWindow_setBuffersGeometry().
- * As soon as we picked a EGLConfig, we can safely reconfigure the
- * ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID. */
- eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format);
-
- ANativeWindow_setBuffersGeometry(engine->app->window, 0, 0, format);
- //ANativeWindow_setFlags(engine->app->window, 0, 0, format|);
-
- surface = eglCreateWindowSurface(display, config, engine->app->window, NULL);
-
- const EGLint context_attribs[] = {
- EGL_CONTEXT_CLIENT_VERSION, 2,
- EGL_NONE
- };
- context = eglCreateContext(display, config, EGL_NO_CONTEXT, p_gl2 ? context_attribs : NULL);
-
- if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
- LOGW("Unable to eglMakeCurrent");
- return -1;
- }
-
- eglQuerySurface(display, surface, EGL_WIDTH, &w);
- eglQuerySurface(display, surface, EGL_HEIGHT, &h);
-
- //engine->os->set_egl_extensions(eglQueryString(display,EGL_EXTENSIONS));
- engine->os->init_video_mode(w, h);
-
- engine->display = display;
- engine->context = context;
- engine->surface = surface;
- engine->width = w;
- engine->height = h;
- engine->display_active = true;
-
- //engine->state.angle = 0;
-
- // Initialize GL state.
- //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
- glEnable(GL_CULL_FACE);
- // glShadeModel(GL_SMOOTH);
- glDisable(GL_DEPTH_TEST);
- LOGI("GL Version: %s - %s %s\n", glGetString(GL_VERSION), glGetString(GL_VENDOR), glGetString(GL_RENDERER));
-
- return 0;
-}
-
-static void engine_draw_frame(struct engine *engine) {
- if (engine->display == NULL) {
- // No display.
- return;
- }
-
- // Just fill the screen with a color.
- //glClearColor(0,1,0,1);
- //glClear(GL_COLOR_BUFFER_BIT);
- if (engine->os && engine->os->main_loop_iterate()) {
-
- engine->requested_quit = true;
- return; //should exit instead
- }
-
- eglSwapBuffers(engine->display, engine->surface);
-}
-
-static void engine_term_display(struct engine *engine) {
- if (engine->display != EGL_NO_DISPLAY) {
- eglMakeCurrent(engine->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
- if (engine->context != EGL_NO_CONTEXT) {
- eglDestroyContext(engine->display, engine->context);
- }
- if (engine->surface != EGL_NO_SURFACE) {
- eglDestroySurface(engine->display, engine->surface);
- }
- eglTerminate(engine->display);
- }
-
- engine->animating = 0;
- engine->display = EGL_NO_DISPLAY;
- engine->context = EGL_NO_CONTEXT;
- engine->surface = EGL_NO_SURFACE;
- engine->display_active = false;
-}
-
-/**
- * Process the next input event.
- */
-static int32_t engine_handle_input(struct android_app *app, AInputEvent *event) {
- struct engine *engine = (struct engine *)app->userData;
-
- if (!engine->os)
- return 0;
-
- switch (AInputEvent_getType(event)) {
-
- case AINPUT_EVENT_TYPE_KEY: {
-
- int ac = AKeyEvent_getAction(event);
- switch (ac) {
-
- case AKEY_EVENT_ACTION_DOWN: {
-
- int32_t code = AKeyEvent_getKeyCode(event);
- if (code == AKEYCODE_BACK) {
-
- //AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled);
- if (engine->os)
- engine->os->main_loop_request_quit();
- return 1;
- }
-
- } break;
- case AKEY_EVENT_ACTION_UP: {
-
- } break;
- }
-
- } break;
- case AINPUT_EVENT_TYPE_MOTION: {
-
- Vector<OS_Android::TouchPos> touchvec;
-
- int pc = AMotionEvent_getPointerCount(event);
-
- touchvec.resize(pc);
-
- for (int i = 0; i < pc; i++) {
-
- touchvec[i].pos.x = AMotionEvent_getX(event, i);
- touchvec[i].pos.y = AMotionEvent_getY(event, i);
- touchvec[i].id = AMotionEvent_getPointerId(event, i);
- }
-
- //System.out.printf("gaction: %d\n",event.getAction());
- int pidx = (AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> 8;
- switch (AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK) {
-
- case AMOTION_EVENT_ACTION_DOWN: {
- engine->os->process_touch(0, 0, touchvec);
-
- //System.out.printf("action down at: %f,%f\n", event.getX(),event.getY());
- } break;
- case AMOTION_EVENT_ACTION_MOVE: {
- engine->os->process_touch(1, 0, touchvec);
- /*
- for(int i=0;i<event.getPointerCount();i++) {
- System.out.printf("%d - moved to: %f,%f\n",i, event.getX(i),event.getY(i));
- }
- */
- } break;
- case AMOTION_EVENT_ACTION_POINTER_UP: {
-
- engine->os->process_touch(4, pidx, touchvec);
- //System.out.printf("%d - s.up at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
- } break;
- case AMOTION_EVENT_ACTION_POINTER_DOWN: {
- engine->os->process_touch(3, pidx, touchvec);
- //System.out.printf("%d - s.down at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
- } break;
- case AMOTION_EVENT_ACTION_CANCEL:
- case AMOTION_EVENT_ACTION_UP: {
- engine->os->process_touch(2, 0, touchvec);
- /*
- for(int i=0;i<event.getPointerCount();i++) {
- System.out.printf("%d - up! %f,%f\n",i, event.getX(i),event.getY(i));
- }
- */
- } break;
- }
-
- return 1;
- } break;
- }
-
- return 0;
-}
-
-/**
- * Process the next main command.
- */
-
-static void _gfx_init(void *ud, bool p_gl2) {
-
- struct engine *engine = (struct engine *)ud;
- engine_init_display(engine, p_gl2);
-}
-
-static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
- struct engine *engine = (struct engine *)app->userData;
- // LOGI("**** CMD %i\n",cmd);
- switch (cmd) {
- case APP_CMD_SAVE_STATE:
- // The system has asked us to save our current state. Do so.
- //engine->app->savedState = malloc(sizeof(struct saved_state));
- //*((struct saved_state*)engine->app->savedState) = engine->state;
- //engine->app->savedStateSize = sizeof(struct saved_state);
- break;
- case APP_CMD_CONFIG_CHANGED:
- case APP_CMD_WINDOW_RESIZED: {
-
- if (engine->display_active) {
-
- EGLint w, h;
- eglQuerySurface(engine->display, engine->surface, EGL_WIDTH, &w);
- eglQuerySurface(engine->display, engine->surface, EGL_HEIGHT, &h);
- // if (w==engine->os->get_video_mode().width && h==engine->os->get_video_mode().height)
- // break;
-
- engine_term_display(engine);
- }
-
- engine->os->reload_gfx();
- engine_draw_frame(engine);
- engine->animating = 1;
-
- } break;
- case APP_CMD_INIT_WINDOW:
- //The window is being shown, get it ready.
- //LOGI("INIT WINDOW");
- if (engine->app->window != NULL) {
-
- if (engine->os == NULL) {
-
- //do initialization here, when there's OpenGL! hackish but the only way
- engine->os = new OS_Android(_gfx_init, engine);
-
- __android_log_print(ANDROID_LOG_INFO, "godot", "pre asdasd setup...");
-
- Error err = Main::setup("apk", 0, NULL);
-
- String modules = ProjectSettings::get_singleton()->get("android/modules");
- Vector<String> mods = modules.split(",", false);
- mods.push_back("GodotOS");
- __android_log_print(ANDROID_LOG_INFO, "godot", "mod count: %i", mods.size());
-
- if (mods.size()) {
-
- jclass activityClass = engine->jni->FindClass("android/app/NativeActivity");
-
- jmethodID getClassLoader = engine->jni->GetMethodID(activityClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
-
- jobject cls = engine->jni->CallObjectMethod(app->activity->clazz, getClassLoader);
-
- jclass classLoader = engine->jni->FindClass("java/lang/ClassLoader");
-
- jmethodID findClass = engine->jni->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;");
-
- static JNINativeMethod methods[] = {
- { "registerSingleton", "(Ljava/lang/String;Ljava/lang/Object;)V", (void *)&Java_org_godotengine_godot_Godot_registerSingleton },
- { "registerMethod", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V", (void *)&Java_org_godotengine_godot_Godot_registerMethod },
- { "getGlobal", "(Ljava/lang/String;)Ljava/lang/String;", (void *)&Java_org_godotengine_godot_Godot_getGlobal },
- };
-
- jstring gstrClassName = engine->jni->NewStringUTF("org/godotengine/godot/Godot");
- jclass GodotClass = (jclass)engine->jni->CallObjectMethod(cls, findClass, gstrClassName);
-
- __android_log_print(ANDROID_LOG_INFO, "godot", "godot ****^*^*?^*^*class data %x", GodotClass);
-
- engine->jni->RegisterNatives(GodotClass, methods, sizeof(methods) / sizeof(methods[0]));
-
- for (int i = 0; i < mods.size(); i++) {
-
- String m = mods[i];
- //jclass singletonClass = engine->jni->FindClass(m.utf8().get_data());
-
- jstring strClassName = engine->jni->NewStringUTF(m.utf8().get_data());
- jclass singletonClass = (jclass)engine->jni->CallObjectMethod(cls, findClass, strClassName);
-
- __android_log_print(ANDROID_LOG_INFO, "godot", "****^*^*?^*^*class data %x", singletonClass);
- jmethodID initialize = engine->jni->GetStaticMethodID(singletonClass, "initialize", "(Landroid/app/Activity;)Lorg/godotengine/godot/Godot$SingletonBase;");
-
- jobject obj = engine->jni->CallStaticObjectMethod(singletonClass, initialize, app->activity->clazz);
- __android_log_print(ANDROID_LOG_INFO, "godot", "****^*^*?^*^*class instance %x", obj);
- jobject gob = engine->jni->NewGlobalRef(obj);
- }
- }
-
- if (!Main::start())
- return; //should exit instead and print the error
-
- engine->os->main_loop_begin();
- } else {
- //i guess recreate resources?
- engine->os->reload_gfx();
- }
-
- engine->animating = 1;
- engine_draw_frame(engine);
- }
- break;
- case APP_CMD_TERM_WINDOW:
- // The window is being hidden or closed, clean it up.
- //LOGI("TERM WINDOW");
- engine_term_display(engine);
- break;
- case APP_CMD_GAINED_FOCUS:
- // When our app gains focus, we start monitoring the accelerometer.
- if (engine->accelerometerSensor != NULL) {
- ASensorEventQueue_enableSensor(engine->sensorEventQueue,
- engine->accelerometerSensor);
- // We'd like to get 60 events per second (in us).
- ASensorEventQueue_setEventRate(engine->sensorEventQueue,
- engine->accelerometerSensor, (1000L / 60) * 1000);
- }
- // start monitoring gravity
- if (engine->gravitySensor != NULL) {
- ASensorEventQueue_enableSensor(engine->sensorEventQueue,
- engine->gravitySensor);
- // We'd like to get 60 events per second (in us).
- ASensorEventQueue_setEventRate(engine->sensorEventQueue,
- engine->gravitySensor, (1000L / 60) * 1000);
- }
- // Also start monitoring the magnetometer.
- if (engine->magnetometerSensor != NULL) {
- ASensorEventQueue_enableSensor(engine->sensorEventQueue,
- engine->magnetometerSensor);
- // We'd like to get 60 events per second (in us).
- ASensorEventQueue_setEventRate(engine->sensorEventQueue,
- engine->magnetometerSensor, (1000L / 60) * 1000);
- }
- // And the gyroscope.
- if (engine->gyroscopeSensor != NULL) {
- ASensorEventQueue_enableSensor(engine->sensorEventQueue,
- engine->gyroscopeSensor);
- // We'd like to get 60 events per second (in us).
- ASensorEventQueue_setEventRate(engine->sensorEventQueue,
- engine->gyroscopeSensor, (1000L / 60) * 1000);
- }
- engine->animating = 1;
- break;
- case APP_CMD_LOST_FOCUS:
- // When our app loses focus, we stop monitoring the sensors.
- // This is to avoid consuming battery while not being used.
- if (engine->accelerometerSensor != NULL) {
- ASensorEventQueue_disableSensor(engine->sensorEventQueue,
- engine->accelerometerSensor);
- }
- if (engine->gravitySensor != NULL) {
- ASensorEventQueue_disableSensor(engine->sensorEventQueue,
- engine->gravitySensor);
- }
- if (engine->magnetometerSensor != NULL) {
- ASensorEventQueue_disableSensor(engine->sensorEventQueue,
- engine->magnetometerSensor);
- }
- if (engine->gyroscopeSensor != NULL) {
- ASensorEventQueue_disableSensor(engine->sensorEventQueue,
- engine->gyroscopeSensor);
- }
- // Also stop animating.
- engine->animating = 0;
- engine_draw_frame(engine);
- break;
- }
-}
-
-void android_main(struct android_app *app) {
- struct engine engine;
- // Make sure glue isn't stripped.
- app_dummy();
-
- memset(&engine, 0, sizeof(engine));
- app->userData = &engine;
- app->onAppCmd = engine_handle_cmd;
- app->onInputEvent = engine_handle_input;
- engine.app = app;
- engine.requested_quit = false;
- engine.os = NULL;
- engine.display_active = false;
-
- FileAccessAndroid::asset_manager = app->activity->assetManager;
-
- // Prepare to monitor sensors
- engine.sensorManager = ASensorManager_getInstance();
- engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
- ASENSOR_TYPE_ACCELEROMETER);
- engine.gravitySensor = ASensorManager_getDefaultSensor(engine.sensorManager,
- ASENSOR_TYPE_GRAVITY);
- engine.magnetometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
- ASENSOR_TYPE_MAGNETIC_FIELD);
- engine.gyroscopeSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
- ASENSOR_TYPE_GYROSCOPE);
- engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager,
- app->looper, LOOPER_ID_USER, NULL, NULL);
-
- ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_FULLSCREEN | AWINDOW_FLAG_KEEP_SCREEN_ON, 0);
-
- app->activity->vm->AttachCurrentThread(&engine.jni, NULL);
-
- // loop waiting for stuff to do.
-
- while (1) {
- // Read all pending events.
- int ident;
- int events;
- struct android_poll_source *source;
-
- // If not animating, we will block forever waiting for events.
- // If animating, we loop until all events are read, then continue
- // to draw the next frame of animation.
-
- int nullmax = 50;
- while ((ident = ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events,
- (void **)&source)) >= 0) {
-
- // Process this event.
-
- if (source != NULL) {
- // LOGI("process\n");
- source->process(app, source);
- } else {
- nullmax--;
- if (nullmax < 0)
- break;
- }
-
- // If a sensor has data, process it now.
- // LOGI("events\n");
- if (ident == LOOPER_ID_USER) {
- if (engine.accelerometerSensor != NULL || engine.magnetometerSensor != NULL || engine.gyroscopeSensor != NULL) {
- ASensorEvent event;
- while (ASensorEventQueue_getEvents(engine.sensorEventQueue,
- &event, 1) > 0) {
-
- if (engine.os) {
- if (event.acceleration != NULL) {
- engine.os->process_accelerometer(Vector3(event.acceleration.x, event.acceleration.y,
- event.acceleration.z));
- }
- if (event.magnetic != NULL) {
- engine.os->process_magnetometer(Vector3(event.magnetic.x, event.magnetic.y,
- event.magnetic.z));
- }
- if (event.vector != NULL) {
- engine.os->process_gyroscope(Vector3(event.vector.x, event.vector.y,
- event.vector.z));
- }
- }
- }
- }
- }
-
- // Check if we are exiting.
- if (app->destroyRequested != 0) {
- if (engine.os) {
- engine.os->main_loop_request_quit();
- }
- app->destroyRequested = 0;
- }
-
- if (engine.requested_quit) {
- engine_term_display(&engine);
- exit(0);
- }
-
- // LOGI("end\n");
- }
-
- // LOGI("engine animating? %i\n",engine.animating);
-
- if (engine.animating) {
- //do os render
-
- engine_draw_frame(&engine);
- //LOGI("TERM WINDOW");
- }
- }
-}
-
-JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerSingleton(JNIEnv *env, jobject obj, jstring name, jobject p_object) {
-
- String singname = env->GetStringUTFChars(name, NULL);
- JNISingleton *s = memnew(JNISingleton);
- s->update_env(env);
- s->set_instance(env->NewGlobalRef(p_object));
- jni_singletons[singname] = s;
-
- Engine::get_singleton()->add_singleton(Engine::Singleton(singname, s));
-}
-
-static Variant::Type get_jni_type(const String &p_type) {
-
- static struct {
- const char *name;
- Variant::Type type;
- } _type_to_vtype[] = {
- { "void", Variant::NIL },
- { "boolean", Variant::BOOL },
- { "int", Variant::INT },
- { "float", Variant::REAL },
- { "java.lang.String", Variant::STRING },
- { "[I", Variant::INT_ARRAY },
- { "[F", Variant::REAL_ARRAY },
- { "[Ljava.lang.String;", Variant::STRING_ARRAY },
- { NULL, Variant::NIL }
- };
-
- int idx = 0;
-
- while (_type_to_vtype[idx].name) {
-
- if (p_type == _type_to_vtype[idx].name)
- return _type_to_vtype[idx].type;
-
- idx++;
- }
-
- return Variant::NIL;
-}
-
-static const char *get_jni_sig(const String &p_type) {
-
- static struct {
- const char *name;
- const char *sig;
- } _type_to_vtype[] = {
- { "void", "V" },
- { "boolean", "Z" },
- { "int", "I" },
- { "float", "F" },
- { "java.lang.String", "Ljava/lang/String;" },
- { "[I", "[I" },
- { "[F", "[F" },
- { "[Ljava.lang.String;", "[Ljava/lang/String;" },
- { NULL, "V" }
- };
-
- int idx = 0;
-
- while (_type_to_vtype[idx].name) {
-
- if (p_type == _type_to_vtype[idx].name)
- return _type_to_vtype[idx].sig;
-
- idx++;
- }
-
- return "";
-}
-
-JNIEXPORT jstring JNICALL Java_org_godotengine_godot_Godot_getGlobal(JNIEnv *env, jobject obj, jstring path) {
-
- String js = env->GetStringUTFChars(path, NULL);
-
- return env->NewStringUTF(ProjectSettings::get_singleton()->get(js).operator String().utf8().get_data());
-}
-
-JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerMethod(JNIEnv *env, jobject obj, jstring sname, jstring name, jstring ret, jobjectArray args) {
-
- String singname = env->GetStringUTFChars(sname, NULL);
-
- ERR_FAIL_COND(!jni_singletons.has(singname));
-
- JNISingleton *s = jni_singletons.get(singname);
-
- String mname = env->GetStringUTFChars(name, NULL);
- String retval = env->GetStringUTFChars(ret, NULL);
- Vector<Variant::Type> types;
- String cs = "(";
-
- int stringCount = env->GetArrayLength(args);
-
- for (int i = 0; i < stringCount; i++) {
-
- jstring string = (jstring)env->GetObjectArrayElement(args, i);
- const char *rawString = env->GetStringUTFChars(string, 0);
- types.push_back(get_jni_type(String(rawString)));
- cs += get_jni_sig(String(rawString));
- }
-
- cs += ")";
- cs += get_jni_sig(retval);
- jclass cls = env->GetObjectClass(s->get_instance());
- jmethodID mid = env->GetMethodID(cls, mname.ascii().get_data(), cs.ascii().get_data());
- if (!mid) {
-
- print_line("RegisterMethod: Failed getting method ID: " + mname);
- }
-
- s->add_method(mname, mid, types, get_jni_type(retval));
-}
-
-#endif
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp
index 43bd841baf..fb9c0f08ad 100644
--- a/platform/android/java_glue.cpp
+++ b/platform/android/java_glue.cpp
@@ -28,8 +28,6 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#include "java_glue.h"
#include "android/asset_manager_jni.h"
#include "audio_driver_jandroid.h"
@@ -1566,4 +1564,3 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv *
//Main::cleanup();
//return os.get_exit_code();
-#endif
diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h
index d433b5f0d8..dc5b9cca49 100644
--- a/platform/android/java_glue.h
+++ b/platform/android/java_glue.h
@@ -28,8 +28,6 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef ANDROID_NATIVE_ACTIVITY
-
#ifndef JAVA_GLUE_H
#define JAVA_GLUE_H
@@ -64,5 +62,4 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv *
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setVirtualKeyboardHeight(JNIEnv *env, jobject obj, jint p_height);
}
-#endif
#endif // JAVA_GLUE_H
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 96ff226402..afdd108987 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -41,13 +41,8 @@
#include "servers/visual/visual_server_raster.h"
#include "servers/visual/visual_server_wrap_mt.h"
-#ifdef ANDROID_NATIVE_ACTIVITY
-#include "dir_access_android.h"
-#include "file_access_android.h"
-#else
#include "dir_access_jandroid.h"
#include "file_access_jandroid.h"
-#endif
#include <dlfcn.h>
@@ -90,18 +85,6 @@ void OS_Android::initialize_core() {
OS_Unix::initialize_core();
-#ifdef ANDROID_NATIVE_ACTIVITY
-
- FileAccess::make_default<FileAccessAndroid>(FileAccess::ACCESS_RESOURCES);
- FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_USERDATA);
- FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_FILESYSTEM);
- //FileAccessBufferedFA<FileAccessUnix>::make_default();
- DirAccess::make_default<DirAccessAndroid>(DirAccess::ACCESS_RESOURCES);
- DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA);
- DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM);
-
-#else
-
if (use_apk_expansion)
FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_RESOURCES);
else {
@@ -121,8 +104,6 @@ void OS_Android::initialize_core() {
DirAccess::make_default<DirAccessJAndroid>(DirAccess::ACCESS_RESOURCES);
DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA);
DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM);
-
-#endif
}
void OS_Android::set_opengl_extensions(const char *p_gl_extensions) {
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index e89a380e4c..ad6fe1976a 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -41,12 +41,6 @@
#include "servers/audio_server.h"
#include "servers/visual/rasterizer.h"
-#ifdef ANDROID_NATIVE_ACTIVITY
-#include <android/log.h>
-#include <android/sensor.h>
-#include <android_native_app_glue.h>
-#endif
-
typedef void (*GFXInitFunc)(void *ud, bool gl2);
typedef int (*OpenURIFunc)(const String &);
typedef String (*GetUserDataDirFunc)();
diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py
index c9f37931b0..4608770c09 100644
--- a/platform/iphone/detect.py
+++ b/platform/iphone/detect.py
@@ -105,13 +105,13 @@ def configure(env):
detect_darwin_sdk_path('iphonesimulator', env)
env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.9'
arch_flag = "i386" if env["arch"] == "x86" else env["arch"]
- env.Append(CCFLAGS=('-arch ' + arch_flag + ' -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -isysroot $IPHONESDK -mios-simulator-version-min=9.0 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"').split())
+ env.Append(CCFLAGS=('-arch ' + arch_flag + ' -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -isysroot $IPHONESDK -mios-simulator-version-min=10.0 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"').split())
elif (env["arch"] == "arm"):
detect_darwin_sdk_path('iphone', env)
- env.Append(CCFLAGS='-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -fpascal-strings -fblocks -isysroot $IPHONESDK -fvisibility=hidden -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=9.0 -MMD -MT dependencies'.split())
+ env.Append(CCFLAGS='-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -fpascal-strings -fblocks -isysroot $IPHONESDK -fvisibility=hidden -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=10.0 -MMD -MT dependencies'.split())
elif (env["arch"] == "arm64"):
detect_darwin_sdk_path('iphone', env)
- env.Append(CCFLAGS='-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -fpascal-strings -fblocks -fvisibility=hidden -MMD -MT dependencies -miphoneos-version-min=9.0 -isysroot $IPHONESDK'.split())
+ env.Append(CCFLAGS='-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -fpascal-strings -fblocks -fvisibility=hidden -MMD -MT dependencies -miphoneos-version-min=10.0 -isysroot $IPHONESDK'.split())
env.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
@@ -124,7 +124,7 @@ def configure(env):
if (env["arch"] == "x86" or env["arch"] == "x86_64"):
arch_flag = "i386" if env["arch"] == "x86" else env["arch"]
- env.Append(LINKFLAGS=['-arch', arch_flag, '-mios-simulator-version-min=9.0',
+ env.Append(LINKFLAGS=['-arch', arch_flag, '-mios-simulator-version-min=10.0',
'-isysroot', '$IPHONESDK',
'-Xlinker',
'-objc_abi_version',
@@ -132,9 +132,9 @@ def configure(env):
'-F$IPHONESDK',
])
elif (env["arch"] == "arm"):
- env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=9.0'])
+ env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=10.0'])
if (env["arch"] == "arm64"):
- env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=9.0'])
+ env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=10.0'])
env.Append(LINKFLAGS=['-isysroot', '$IPHONESDK',
'-framework', 'AudioToolbox',
diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp
index 7fb3afe9a9..8a9b254cdc 100644
--- a/platform/iphone/export/export.cpp
+++ b/platform/iphone/export/export.cpp
@@ -99,6 +99,70 @@ class EditorExportPlatformIOS : public EditorExportPlatform {
Error _export_additional_assets(const String &p_out_dir, const Vector<String> &p_assets, bool p_is_framework, Vector<IOSExportAsset> &r_exported_assets);
Error _export_additional_assets(const String &p_out_dir, const Vector<SharedObject> &p_libraries, Vector<IOSExportAsset> &r_exported_assets);
+ bool is_package_name_valid(const String &p_package, String *r_error = NULL) const {
+
+ String pname = p_package;
+
+ if (pname.length() == 0) {
+ if (r_error) {
+ *r_error = "Identifier is missing.";
+ }
+ return false;
+ }
+
+ int segments = 0;
+ bool first = true;
+ for (int i = 0; i < pname.length(); i++) {
+ CharType c = pname[i];
+ if (first && c == '.') {
+ if (r_error) {
+ *r_error = "Identifier segments must be of non-zero length.";
+ }
+ return false;
+ }
+ if (c == '.') {
+ segments++;
+ first = true;
+ continue;
+ }
+ if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_')) {
+ if (r_error) {
+ *r_error = "The character '" + String::chr(c) + "' is not allowed in Identifier.";
+ }
+ return false;
+ }
+ if (first && (c >= '0' && c <= '9')) {
+ if (r_error) {
+ *r_error = "A digit cannot be the first character in a Identifier segment.";
+ }
+ return false;
+ }
+ if (first && c == '_') {
+ if (r_error) {
+ *r_error = "The character '" + String::chr(c) + "' cannot be the first character in a Identifier segment.";
+ }
+ return false;
+ }
+ first = false;
+ }
+
+ if (segments == 0) {
+ if (r_error) {
+ *r_error = "The Identifier must have at least one '.' separator.";
+ }
+ return false;
+ }
+
+ if (first) {
+ if (r_error) {
+ *r_error = "Identifier segments must be of non-zero length.";
+ }
+ return false;
+ }
+
+ return true;
+ }
+
protected:
virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features);
virtual void get_export_options(List<ExportOption> *r_options);
@@ -987,6 +1051,12 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset
err += "App Store Team ID not specified - cannot configure the project.\n";
}
+ String identifier = p_preset->get("application/identifier");
+ String pn_err;
+ if (!is_package_name_valid(identifier, &pn_err)) {
+ err += "Invalid Identifier - " + pn_err + "\n";
+ }
+
for (unsigned int i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) {
IconInfo info = icon_infos[i];
String icon_path = p_preset->get(info.preset_key);
diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm
index 2925b46007..054c066224 100644
--- a/platform/iphone/gl_view.mm
+++ b/platform/iphone/gl_view.mm
@@ -47,6 +47,7 @@
@end
*/
+bool gles3_available = true;
int gl_view_base_fb;
static String keyboard_text;
static GLView *_instance = NULL;
@@ -84,7 +85,8 @@ Rect2 _get_ios_window_safe_area(float p_window_width, float p_window_height) {
}
ERR_FAIL_COND_V(insets.left < 0 || insets.top < 0 || insets.right < 0 || insets.bottom < 0,
Rect2(0, 0, p_window_width, p_window_height));
- return Rect2(insets.left, insets.top, p_window_width - insets.right - insets.left, p_window_height - insets.bottom - insets.top);
+ UIEdgeInsets window_insets = UIEdgeInsetsMake(_points_to_pixels(insets.top), _points_to_pixels(insets.left), _points_to_pixels(insets.bottom), _points_to_pixels(insets.right));
+ return Rect2(window_insets.left, window_insets.top, p_window_width - window_insets.right - window_insets.left, p_window_height - window_insets.bottom - window_insets.top);
}
bool _play_video(String p_path, float p_volume, String p_audio_track, String p_subtitle_track) {
@@ -287,8 +289,12 @@ static void clear_touches() {
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
if (!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer]) {
- [self release];
- return nil;
+ context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
+ gles3_available = false;
+ if (!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer]) {
+ [self release];
+ return nil;
+ }
}
// Default the animation interval to 1/60th of a second.
diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp
index e996a5905b..dd764b7173 100644
--- a/platform/iphone/os_iphone.cpp
+++ b/platform/iphone/os_iphone.cpp
@@ -32,6 +32,7 @@
#include "os_iphone.h"
+#include "drivers/gles2/rasterizer_gles2.h"
#include "drivers/gles3/rasterizer_gles3.h"
#include "servers/visual/visual_server_raster.h"
#include "servers/visual/visual_server_wrap_mt.h"
@@ -51,12 +52,19 @@
int OSIPhone::get_video_driver_count() const {
- return 1;
+ return 2;
};
const char *OSIPhone::get_video_driver_name(int p_driver) const {
- return "GLES3";
+ switch (p_driver) {
+ case VIDEO_DRIVER_GLES3:
+ return "GLES3";
+ case VIDEO_DRIVER_GLES2:
+ return "GLES2";
+ }
+ ERR_EXPLAIN("Invalid video driver index " + itos(p_driver));
+ ERR_FAIL_V(NULL);
};
OSIPhone *OSIPhone::get_singleton() {
@@ -97,16 +105,48 @@ int OSIPhone::get_current_video_driver() const {
return video_driver_index;
}
+extern bool gles3_available; // from gl_view.mm
+
Error OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
- video_driver_index = VIDEO_DRIVER_GLES3;
+ bool use_gl3 = GLOBAL_GET("rendering/quality/driver/driver_name") == "GLES3";
+ bool gl_initialization_error = false;
+
+ while (true) {
+ if (use_gl3) {
+ if (RasterizerGLES3::is_viable() == OK && gles3_available) {
+ RasterizerGLES3::register_config();
+ RasterizerGLES3::make_current();
+ break;
+ } else {
+ if (GLOBAL_GET("rendering/quality/driver/driver_fallback") == "Best") {
+ p_video_driver = VIDEO_DRIVER_GLES2;
+ use_gl3 = false;
+ continue;
+ } else {
+ gl_initialization_error = true;
+ break;
+ }
+ }
+ } else {
+ if (RasterizerGLES2::is_viable() == OK) {
+ RasterizerGLES2::register_config();
+ RasterizerGLES2::make_current();
+ break;
+ } else {
+ gl_initialization_error = true;
+ break;
+ }
+ }
+ }
- if (RasterizerGLES3::is_viable() != OK) {
+ if (gl_initialization_error) {
+ OS::get_singleton()->alert("Your device does not support any of the supported OpenGL versions.",
+ "Unable to initialize Video driver");
return ERR_UNAVAILABLE;
}
- RasterizerGLES3::register_config();
- RasterizerGLES3::make_current();
+ video_driver_index = p_video_driver;
visual_server = memnew(VisualServerRaster);
// FIXME: Reimplement threaded rendering
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
@@ -117,7 +157,10 @@ Error OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p
//visual_server->cursor_set_visible(false, 0);
// reset this to what it should be, it will have been set to 0 after visual_server->init() is called
- RasterizerStorageGLES3::system_fbo = gl_view_base_fb;
+ if (use_gl3)
+ RasterizerStorageGLES3::system_fbo = gl_view_base_fb;
+ else
+ RasterizerStorageGLES2::system_fbo = gl_view_base_fb;
AudioDriverManager::initialize(p_audio_driver);
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index 7a6613bb32..a5b627b8dc 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -44,6 +44,11 @@ extern "C" EMSCRIPTEN_KEEPALIVE void audio_driver_js_mix() {
AudioDriverJavaScript::singleton->mix_to_js();
}
+extern "C" EMSCRIPTEN_KEEPALIVE void audio_driver_process_capture(float sample) {
+
+ AudioDriverJavaScript::singleton->process_capture(sample);
+}
+
void AudioDriverJavaScript::mix_to_js() {
int channel_count = get_total_channels_by_speaker_mode(get_speaker_mode());
@@ -51,31 +56,39 @@ void AudioDriverJavaScript::mix_to_js() {
int32_t *stream_buffer = reinterpret_cast<int32_t *>(internal_buffer);
audio_server_process(sample_count, stream_buffer);
for (int i = 0; i < sample_count * channel_count; i++) {
- internal_buffer[i] = float(stream_buffer[i] >> 16) / 32768.0;
+ internal_buffer[i] = float(stream_buffer[i] >> 16) / 32768.f;
}
}
+void AudioDriverJavaScript::process_capture(float sample) {
+
+ int32_t sample32 = int32_t(sample * 32768.f) * (1U << 16);
+ input_buffer_write(sample32);
+}
+
Error AudioDriverJavaScript::init() {
/* clang-format off */
EM_ASM({
_audioDriver_audioContext = new (window.AudioContext || window.webkitAudioContext);
+ _audioDriver_audioInput = null;
+ _audioDriver_inputStream = null;
_audioDriver_scriptNode = null;
});
/* clang-format on */
int channel_count = get_total_channels_by_speaker_mode(get_speaker_mode());
/* clang-format off */
- int buffer_length = EM_ASM_INT({
+ buffer_length = EM_ASM_INT({
var CHANNEL_COUNT = $0;
var channelCount = _audioDriver_audioContext.destination.channelCount;
try {
// Try letting the browser recommend a buffer length.
- _audioDriver_scriptNode = _audioDriver_audioContext.createScriptProcessor(0, 0, channelCount);
+ _audioDriver_scriptNode = _audioDriver_audioContext.createScriptProcessor(0, 2, channelCount);
} catch (e) {
// ...otherwise, default to 4096.
- _audioDriver_scriptNode = _audioDriver_audioContext.createScriptProcessor(4096, 0, channelCount);
+ _audioDriver_scriptNode = _audioDriver_audioContext.createScriptProcessor(4096, 2, channelCount);
}
_audioDriver_scriptNode.connect(_audioDriver_audioContext.destination);
@@ -91,6 +104,7 @@ Error AudioDriverJavaScript::init() {
memdelete_arr(internal_buffer);
internal_buffer = memnew_arr(float, buffer_length *channel_count);
}
+
return internal_buffer ? OK : ERR_OUT_OF_MEMORY;
}
@@ -101,11 +115,13 @@ void AudioDriverJavaScript::start() {
var INTERNAL_BUFFER_PTR = $0;
var audioDriverMixFunction = cwrap('audio_driver_js_mix');
+ var audioDriverProcessCapture = cwrap('audio_driver_process_capture', null, ['number']);
_audioDriver_scriptNode.onaudioprocess = function(audioProcessingEvent) {
audioDriverMixFunction();
- // The output buffer contains the samples that will be modified and played.
+
+ var input = audioProcessingEvent.inputBuffer;
var output = audioProcessingEvent.outputBuffer;
- var input = HEAPF32.subarray(
+ var internalBuffer = HEAPF32.subarray(
INTERNAL_BUFFER_PTR / HEAPF32.BYTES_PER_ELEMENT,
INTERNAL_BUFFER_PTR / HEAPF32.BYTES_PER_ELEMENT + output.length * output.numberOfChannels);
@@ -113,8 +129,16 @@ void AudioDriverJavaScript::start() {
var outputData = output.getChannelData(channel);
// Loop through samples.
for (var sample = 0; sample < outputData.length; sample++) {
- // Set output equal to input.
- outputData[sample] = input[sample * output.numberOfChannels + channel];
+ outputData[sample] = internalBuffer[sample * output.numberOfChannels + channel];
+ }
+ }
+
+ if (_audioDriver_audioInput) {
+ var inputDataL = input.getChannelData(0);
+ var inputDataR = input.getChannelData(1);
+ for (var i = 0; i < inputDataL.length; i++) {
+ audioDriverProcessCapture(inputDataL[i]);
+ audioDriverProcessCapture(inputDataR[i]);
}
}
};
@@ -152,14 +176,74 @@ void AudioDriverJavaScript::finish() {
/* clang-format off */
EM_ASM({
_audioDriver_audioContext = null;
+ _audioDriver_audioInput = null;
_audioDriver_scriptNode = null;
});
/* clang-format on */
- memdelete_arr(internal_buffer);
- internal_buffer = NULL;
+
+ if (internal_buffer) {
+ memdelete_arr(internal_buffer);
+ internal_buffer = NULL;
+ }
+}
+
+Error AudioDriverJavaScript::capture_start() {
+
+ input_buffer_init(buffer_length);
+
+ /* clang-format off */
+ EM_ASM({
+ function gotMediaInput(stream) {
+ _audioDriver_inputStream = stream;
+ _audioDriver_audioInput = _audioDriver_audioContext.createMediaStreamSource(stream);
+ _audioDriver_audioInput.connect(_audioDriver_scriptNode);
+ }
+
+ function gotMediaInputError(e) {
+ console.log(e);
+ }
+
+ if (navigator.mediaDevices.getUserMedia) {
+ navigator.mediaDevices.getUserMedia({"audio": true}).then(gotMediaInput, gotMediaInputError);
+ } else {
+ if (!navigator.getUserMedia)
+ navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
+ navigator.getUserMedia({"audio": true}, gotMediaInput, gotMediaInputError);
+ }
+ });
+ /* clang-format on */
+
+ return OK;
+}
+
+Error AudioDriverJavaScript::capture_stop() {
+
+ /* clang-format off */
+ EM_ASM({
+ if (_audioDriver_inputStream) {
+ const tracks = _audioDriver_inputStream.getTracks();
+ for (var i = 0; i < tracks.length; i++) {
+ tracks[i].stop();
+ }
+ _audioDriver_inputStream = null;
+ }
+
+ if (_audioDriver_audioInput) {
+ _audioDriver_audioInput.disconnect();
+ _audioDriver_audioInput = null;
+ }
+
+ });
+ /* clang-format on */
+
+ input_buffer.clear();
+
+ return OK;
}
AudioDriverJavaScript::AudioDriverJavaScript() {
+ internal_buffer = NULL;
+
singleton = this;
}
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index a65a8ec29f..c8aeb0b446 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -37,8 +37,12 @@ class AudioDriverJavaScript : public AudioDriver {
float *internal_buffer;
+ int buffer_length;
+
public:
void mix_to_js();
+ void process_capture(float sample);
+
static AudioDriverJavaScript *singleton;
virtual const char *get_name() const;
@@ -51,6 +55,9 @@ public:
virtual void unlock();
virtual void finish();
+ virtual Error capture_start();
+ virtual Error capture_stop();
+
AudioDriverJavaScript();
};
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index cf85c3df7f..22b5f1f87a 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -122,6 +122,7 @@ def configure(env):
## Link flags
env.Append(LINKFLAGS=['-s', 'BINARYEN=1'])
+ env.Append(LINKFLAGS=['-s', 'BINARYEN_TRAP_MODE=\'clamp\''])
# Allow increasing memory buffer size during runtime. This is efficient
# when using WebAssembly (in comparison to asm.js) and works well for
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp
index f27c042637..12a0193521 100644
--- a/platform/osx/export/export.cpp
+++ b/platform/osx/export/export.cpp
@@ -139,10 +139,76 @@ void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options)
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), false));
}
+void _rgba8_to_packbits_encode(int p_ch, int p_size, PoolVector<uint8_t> &p_source, Vector<uint8_t> &p_dest) {
+
+ int src_len = p_size * p_size;
+
+ Vector<uint8_t> result;
+ result.resize(src_len * 1.25); //temp vector for rle encoded data, make it 25% larger for worst case scenario
+ int res_size = 0;
+
+ uint8_t buf[128];
+ int buf_size = 0;
+
+ int i = 0;
+ while (i < src_len) {
+ uint8_t cur = p_source.read()[i * 4 + p_ch];
+
+ if (i < src_len - 2) {
+
+ if ((p_source.read()[(i + 1) * 4 + p_ch] == cur) && (p_source.read()[(i + 2) * 4 + p_ch] == cur)) {
+ if (buf_size > 0) {
+ result.write[res_size++] = (uint8_t)(buf_size - 1);
+ copymem(&result.write[res_size], &buf, buf_size);
+ res_size += buf_size;
+ buf_size = 0;
+ }
+
+ uint8_t lim = i + 130 >= src_len ? src_len - i - 1 : 130;
+ bool hit_lim = true;
+
+ for (int j = 3; j <= lim; j++) {
+ if (p_source.read()[(i + j) * 4 + p_ch] != cur) {
+ hit_lim = false;
+ i = i + j - 1;
+ result.write[res_size++] = (uint8_t)(j - 3 + 0x80);
+ result.write[res_size++] = cur;
+ break;
+ }
+ }
+ if (hit_lim) {
+ result.write[res_size++] = (uint8_t)(lim - 3 + 0x80);
+ result.write[res_size++] = cur;
+ i = i + lim;
+ }
+ } else {
+ buf[buf_size++] = cur;
+ if (buf_size == 128) {
+ result.write[res_size++] = (uint8_t)(buf_size - 1);
+ copymem(&result.write[res_size], &buf, buf_size);
+ res_size += buf_size;
+ buf_size = 0;
+ }
+ }
+ } else {
+ buf[buf_size++] = cur;
+ result.write[res_size++] = (uint8_t)(buf_size - 1);
+ copymem(&result.write[res_size], &buf, buf_size);
+ res_size += buf_size;
+ buf_size = 0;
+ }
+
+ i++;
+ }
+
+ int ofs = p_dest.size();
+ p_dest.resize(p_dest.size() + res_size);
+ copymem(&p_dest.write[ofs], result.ptr(), res_size);
+}
+
void EditorExportPlatformOSX::_make_icon(const Ref<Image> &p_icon, Vector<uint8_t> &p_data) {
Ref<ImageTexture> it = memnew(ImageTexture);
- int size = 512;
Vector<uint8_t> data;
@@ -152,32 +218,82 @@ void EditorExportPlatformOSX::_make_icon(const Ref<Image> &p_icon, Vector<uint8_
data.write[2] = 'n';
data.write[3] = 's';
- const char *name[] = { "ic09", "ic08", "ic07", "icp6", "icp5", "icp4" };
- int index = 0;
-
- while (size >= 16) {
-
+ struct MacOSIconInfo {
+ const char *name;
+ const char *mask_name;
+ bool is_png;
+ int size;
+ };
+
+ static const MacOSIconInfo icon_infos[] = {
+ { "ic10", "", true, 1024 }, //1024x1024 32-bit PNG and 512x512@2x 32-bit "retina" PNG
+ { "ic09", "", true, 512 }, //512×512 32-bit PNG
+ { "ic14", "", true, 512 }, //256x256@2x 32-bit "retina" PNG
+ { "ic08", "", true, 256 }, //256×256 32-bit PNG
+ { "ic13", "", true, 256 }, //128x128@2x 32-bit "retina" PNG
+ { "ic07", "", true, 128 }, //128x128 32-bit PNG
+ { "ic12", "", true, 64 }, //32x32@2x 32-bit "retina" PNG
+ { "ic11", "", true, 32 }, //16x16@2x 32-bit "retina" PNG
+ { "il32", "l8mk", false, 32 }, //32x32 24-bit RLE + 8-bit uncompressed mask
+ { "is32", "s8mk", false, 16 } //16x16 24-bit RLE + 8-bit uncompressed mask
+ };
+
+ for (unsigned int i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) {
Ref<Image> copy = p_icon; // does this make sense? doesn't this just increase the reference count instead of making a copy? Do we even need a copy?
copy->convert(Image::FORMAT_RGBA8);
- copy->resize(size, size);
- it->create_from_image(copy);
- String path = EditorSettings::get_singleton()->get_cache_dir().plus_file("icon.png");
- ResourceSaver::save(path, it);
-
- FileAccess *f = FileAccess::open(path, FileAccess::READ);
- ERR_FAIL_COND(!f);
-
- int ofs = data.size();
- uint32_t len = f->get_len();
- data.resize(data.size() + len + 8);
- f->get_buffer(&data.write[ofs + 8], len);
- memdelete(f);
- len += 8;
- len = BSWAP32(len);
- copymem(&data.write[ofs], name[index], 4);
- encode_uint32(len, &data.write[ofs + 4]);
- index++;
- size /= 2;
+ copy->resize(icon_infos[i].size, icon_infos[i].size);
+
+ if (icon_infos[i].is_png) {
+ //encode png icon
+ it->create_from_image(copy);
+ String path = EditorSettings::get_singleton()->get_cache_dir().plus_file("icon.png");
+ ResourceSaver::save(path, it);
+
+ FileAccess *f = FileAccess::open(path, FileAccess::READ);
+ ERR_FAIL_COND(!f);
+
+ int ofs = data.size();
+ uint32_t len = f->get_len();
+ data.resize(data.size() + len + 8);
+ f->get_buffer(&data.write[ofs + 8], len);
+ memdelete(f);
+ len += 8;
+ len = BSWAP32(len);
+ copymem(&data.write[ofs], icon_infos[i].name, 4);
+ encode_uint32(len, &data.write[ofs + 4]);
+ } else {
+ PoolVector<uint8_t> src_data = copy->get_data();
+
+ //encode 24bit RGB RLE icon
+ {
+ int ofs = data.size();
+ data.resize(data.size() + 8);
+
+ _rgba8_to_packbits_encode(0, icon_infos[i].size, src_data, data); // encode R
+ _rgba8_to_packbits_encode(1, icon_infos[i].size, src_data, data); // encode G
+ _rgba8_to_packbits_encode(2, icon_infos[i].size, src_data, data); // encode B
+
+ int len = data.size() - ofs;
+ len = BSWAP32(len);
+ copymem(&data.write[ofs], icon_infos[i].name, 4);
+ encode_uint32(len, &data.write[ofs + 4]);
+ }
+
+ //encode 8bit mask uncompressed icon
+ {
+ int ofs = data.size();
+ int len = copy->get_width() * copy->get_height();
+ data.resize(data.size() + len + 8);
+
+ for (int j = 0; j < len; j++) {
+ data.write[ofs + 8 + j] = src_data.read()[j * 4 + 3];
+ }
+ len += 8;
+ len = BSWAP32(len);
+ copymem(&data.write[ofs], icon_infos[i].mask_name, 4);
+ encode_uint32(len, &data.write[ofs + 4]);
+ }
+ }
}
uint32_t total_len = data.size();
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index 546c88e74a..ae2eb6288c 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -124,8 +124,8 @@ public:
Point2 im_position;
bool im_active;
- ImeCallback im_callback;
- void *im_target;
+ String im_text;
+ Point2 im_selection;
power_osx *power_manager;
@@ -245,7 +245,8 @@ public:
virtual void set_ime_active(const bool p_active);
virtual void set_ime_position(const Point2 &p_pos);
- virtual void set_ime_intermediate_text_callback(ImeCallback p_callback, void *p_inp);
+ virtual Point2 get_ime_selection() const;
+ virtual String get_ime_text() const;
virtual String get_unique_id() const;
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index e7b3e35381..f8dec3ec7a 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -427,11 +427,13 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
} else {
[markedText initWithString:aString];
}
- if (OS_OSX::singleton->im_callback) {
+ if (OS_OSX::singleton->im_active) {
imeMode = true;
- String ret;
- ret.parse_utf8([[markedText mutableString] UTF8String]);
- OS_OSX::singleton->im_callback(OS_OSX::singleton->im_target, ret, Point2(selectedRange.location, selectedRange.length));
+ OS_OSX::singleton->im_text.parse_utf8([[markedText mutableString] UTF8String]);
+ OS_OSX::singleton->im_selection = Point2(selectedRange.location, selectedRange.length);
+
+ if (OS_OSX::singleton->get_main_loop())
+ OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_OS_IME_UPDATE);
}
}
@@ -443,8 +445,13 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)unmarkText {
imeMode = false;
[[markedText mutableString] setString:@""];
- if (OS_OSX::singleton->im_callback)
- OS_OSX::singleton->im_callback(OS_OSX::singleton->im_target, "", Point2());
+ if (OS_OSX::singleton->im_active) {
+ OS_OSX::singleton->im_text = String();
+ OS_OSX::singleton->im_selection = Point2();
+
+ if (OS_OSX::singleton->get_main_loop())
+ OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_OS_IME_UPDATE);
+ }
}
- (NSArray *)validAttributesForMarkedText {
@@ -1136,12 +1143,14 @@ inline void sendPanEvent(double dx, double dy, int modifierFlags) {
@end
-void OS_OSX::set_ime_intermediate_text_callback(ImeCallback p_callback, void *p_inp) {
- im_callback = p_callback;
- im_target = p_inp;
- if (!im_callback) {
- [window_view cancelComposition];
- }
+Point2 OS_OSX::get_ime_selection() const {
+
+ return im_selection;
+}
+
+String OS_OSX::get_ime_text() const {
+
+ return im_text;
}
String OS_OSX::get_unique_id() const {
@@ -1169,10 +1178,14 @@ String OS_OSX::get_unique_id() const {
}
void OS_OSX::set_ime_active(const bool p_active) {
+
im_active = p_active;
+ if (!im_active)
+ [window_view cancelComposition];
}
void OS_OSX::set_ime_position(const Point2 &p_pos) {
+
im_position = p_pos;
}
@@ -2637,8 +2650,6 @@ OS_OSX::OS_OSX() {
singleton = this;
im_active = false;
im_position = Point2();
- im_callback = NULL;
- im_target = NULL;
layered_window = false;
autoreleasePool = [[NSAutoreleasePool alloc] init];
diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp
index 41e59a5352..c0ea13e7fb 100644
--- a/platform/uwp/export/export.cpp
+++ b/platform/uwp/export/export.cpp
@@ -1134,7 +1134,7 @@ public:
} break;
}
- if (!exists_export_template("uwp_" + platform_infix + "_debug.zip", &err) || !exists_export_template("uwp_" + platform_infix + "_debug.zip", &err)) {
+ if (!exists_export_template("uwp_" + platform_infix + "_debug.zip", &err) || !exists_export_template("uwp_" + platform_infix + "_release.zip", &err)) {
valid = false;
r_missing_templates = true;
}
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index dd0042668f..e14db9a201 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -147,9 +147,9 @@ def setup_msvc_auto(env):
# Note: actual compiler version can be found in env['MSVC_VERSION'], e.g. "14.1" for VS2015
# Get actual target arch into bits (it may be "default" at this point):
if env['TARGET_ARCH'] in ('amd64', 'x86_64'):
- env['bits'] = 64
+ env['bits'] = '64'
else:
- env['bits'] = 32
+ env['bits'] = '32'
print(" Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits']))
if env['TARGET_ARCH'] in ('amd64', 'x86_64'):
env["x86_libtheora_opt_vc"] = False
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index bdf459fd83..55d2bb2153 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -727,16 +727,28 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
} break;
+ case WM_MOVE: {
+ if (!IsIconic(hWnd)) {
+ int x = LOWORD(lParam);
+ int y = HIWORD(lParam);
+ last_pos = Point2(x, y);
+ }
+ } break;
+
case WM_SIZE: {
- int window_w = LOWORD(lParam);
- int window_h = HIWORD(lParam);
- if (window_w > 0 && window_h > 0 && !preserve_window_size) {
- video_mode.width = window_w;
- video_mode.height = window_h;
- } else {
- preserve_window_size = false;
- set_window_size(Size2(video_mode.width, video_mode.height));
+ // Ignore size when a SIZE_MINIMIZED event is triggered
+ if (wParam != SIZE_MINIMIZED) {
+ int window_w = LOWORD(lParam);
+ int window_h = HIWORD(lParam);
+ if (window_w > 0 && window_h > 0 && !preserve_window_size) {
+ video_mode.width = window_w;
+ video_mode.height = window_h;
+ } else {
+ preserve_window_size = false;
+ set_window_size(Size2(video_mode.width, video_mode.height));
+ }
}
+
if (wParam == SIZE_MAXIMIZED) {
maximized = true;
minimized = false;
@@ -1685,6 +1697,10 @@ int OS_Windows::get_screen_dpi(int p_screen) const {
Point2 OS_Windows::get_window_position() const {
+ if (minimized) {
+ return last_pos;
+ }
+
RECT r;
GetWindowRect(hWnd, &r);
return Point2(r.left, r.top);
@@ -1705,9 +1721,15 @@ void OS_Windows::set_window_position(const Point2 &p_position) {
ClientToScreen(hWnd, (POINT *)&rect.right);
ClipCursor(&rect);
}
+
+ last_pos = p_position;
}
Size2 OS_Windows::get_window_size() const {
+ if (minimized) {
+ return Size2(video_mode.width, video_mode.height);
+ }
+
RECT r;
if (GetClientRect(hWnd, &r)) { // Only area inside of window border
return Size2(r.right - r.left, r.bottom - r.top);
diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h
index 6aadd6994c..d09ade4daa 100644
--- a/platform/windows/os_windows.h
+++ b/platform/windows/os_windows.h
@@ -93,6 +93,7 @@ class OS_Windows : public OS {
HDC hDC; // Private GDI Device Context
HINSTANCE hInstance; // Holds The Instance Of The Application
HWND hWnd;
+ Point2 last_pos;
HBITMAP hBitmap; //DIB section for layered window
uint8_t *dib_data;
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index 04854e93b6..0c02e47b5e 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -2853,11 +2853,19 @@ void OS_X11::set_context(int p_context) {
XClassHint *classHint = XAllocClassHint();
if (classHint) {
+ char *wm_class = (char *)"Godot";
if (p_context == CONTEXT_EDITOR)
classHint->res_name = (char *)"Godot_Editor";
if (p_context == CONTEXT_PROJECTMAN)
classHint->res_name = (char *)"Godot_ProjectList";
- classHint->res_class = (char *)"Godot";
+
+ if (p_context == CONTEXT_ENGINE) {
+ classHint->res_name = (char *)"Godot_Engine";
+ wm_class = (char *)((String)GLOBAL_GET("application/config/name")).utf8().ptrw();
+ }
+
+ classHint->res_class = wm_class;
+
XSetClassHint(x11_display, x11_window, classHint);
XFree(classHint);
}
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index ae5891fa50..4a4aaf3238 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -158,7 +158,9 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_
Map<ObjectID, BodyState>::Element *E = body_map.find(objid);
- ERR_FAIL_COND(!body_in && !E);
+ if (!body_in && !E) {
+ return; //does not exist because it was likely removed from the tree
+ }
locked = true;
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp
index 0ea2e85dfa..2534f676ca 100644
--- a/scene/2d/canvas_item.cpp
+++ b/scene/2d/canvas_item.cpp
@@ -42,7 +42,7 @@
#include "servers/visual_server.h"
Mutex *CanvasItemMaterial::material_mutex = NULL;
-SelfList<CanvasItemMaterial>::List CanvasItemMaterial::dirty_materials;
+SelfList<CanvasItemMaterial>::List *CanvasItemMaterial::dirty_materials = NULL;
Map<CanvasItemMaterial::MaterialKey, CanvasItemMaterial::ShaderData> CanvasItemMaterial::shader_map;
CanvasItemMaterial::ShaderNames *CanvasItemMaterial::shader_names = NULL;
@@ -52,6 +52,8 @@ void CanvasItemMaterial::init_shaders() {
material_mutex = Mutex::create();
#endif
+ dirty_materials = memnew(SelfList<CanvasItemMaterial>::List);
+
shader_names = memnew(ShaderNames);
shader_names->particles_anim_h_frames = "particles_anim_h_frames";
@@ -61,6 +63,9 @@ void CanvasItemMaterial::init_shaders() {
void CanvasItemMaterial::finish_shaders() {
+ memdelete(dirty_materials);
+ dirty_materials = NULL;
+
#ifndef NO_THREADS
memdelete(material_mutex);
#endif
@@ -68,7 +73,7 @@ void CanvasItemMaterial::finish_shaders() {
void CanvasItemMaterial::_update_shader() {
- dirty_materials.remove(&element);
+ dirty_materials->remove(&element);
MaterialKey mk = _compute_key();
if (mk.key == current_key.key)
@@ -157,9 +162,9 @@ void CanvasItemMaterial::flush_changes() {
if (material_mutex)
material_mutex->lock();
- while (dirty_materials.first()) {
+ while (dirty_materials->first()) {
- dirty_materials.first()->self()->_update_shader();
+ dirty_materials->first()->self()->_update_shader();
}
if (material_mutex)
@@ -172,7 +177,7 @@ void CanvasItemMaterial::_queue_shader_change() {
material_mutex->lock();
if (!element.in_list()) {
- dirty_materials.add(&element);
+ dirty_materials->add(&element);
}
if (material_mutex)
@@ -1160,7 +1165,7 @@ void CanvasItem::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_string", "font", "position", "text", "modulate", "clip_w"), &CanvasItem::draw_string, DEFVAL(Color(1, 1, 1)), DEFVAL(-1));
ClassDB::bind_method(D_METHOD("draw_char", "font", "position", "char", "next", "modulate"), &CanvasItem::draw_char, DEFVAL(Color(1, 1, 1)));
ClassDB::bind_method(D_METHOD("draw_mesh", "mesh", "texture", "normal_map"), &CanvasItem::draw_mesh, DEFVAL(Ref<Texture>()));
- ClassDB::bind_method(D_METHOD("draw_multimesh", "mesh", "texture", "normal_map"), &CanvasItem::draw_mesh, DEFVAL(Ref<Texture>()));
+ ClassDB::bind_method(D_METHOD("draw_multimesh", "multimesh", "texture", "normal_map"), &CanvasItem::draw_multimesh, DEFVAL(Ref<Texture>()));
ClassDB::bind_method(D_METHOD("draw_set_transform", "position", "rotation", "scale"), &CanvasItem::draw_set_transform);
ClassDB::bind_method(D_METHOD("draw_set_transform_matrix", "xform"), &CanvasItem::draw_set_transform_matrix);
diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h
index 9fe7cb1e00..1a6016e6e1 100644
--- a/scene/2d/canvas_item.h
+++ b/scene/2d/canvas_item.h
@@ -109,7 +109,7 @@ private:
}
static Mutex *material_mutex;
- static SelfList<CanvasItemMaterial>::List dirty_materials;
+ static SelfList<CanvasItemMaterial>::List *dirty_materials;
SelfList<CanvasItemMaterial> element;
void _update_shader();
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp
index 613387bf07..93ad99272c 100644
--- a/scene/2d/cpu_particles_2d.cpp
+++ b/scene/2d/cpu_particles_2d.cpp
@@ -1305,9 +1305,9 @@ void CPUParticles2D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angle_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_ANGLE);
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "angle_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_ANGLE);
ADD_GROUP("Scale", "");
- ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE);
- ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE);
- ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_amount_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE);
ADD_GROUP("Color", "");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "color_ramp", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_color_ramp", "get_color_ramp");
diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp
index b36924e521..9154929e0b 100644
--- a/scene/2d/navigation_polygon.cpp
+++ b/scene/2d/navigation_polygon.cpp
@@ -349,8 +349,6 @@ void NavigationPolygonInstance::set_enabled(bool p_enabled) {
if (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_navigation_hint())
update();
-
- //update_gizmo();
}
bool NavigationPolygonInstance::is_enabled() const {
@@ -461,26 +459,28 @@ void NavigationPolygonInstance::_notification(int p_what) {
void NavigationPolygonInstance::set_navigation_polygon(const Ref<NavigationPolygon> &p_navpoly) {
- if (p_navpoly == navpoly)
+ if (p_navpoly == navpoly) {
return;
+ }
if (navigation && nav_id != -1) {
navigation->navpoly_remove(nav_id);
nav_id = -1;
}
+
if (navpoly.is_valid()) {
navpoly->disconnect(CoreStringNames::get_singleton()->changed, this, "_navpoly_changed");
}
navpoly = p_navpoly;
-
if (navpoly.is_valid()) {
navpoly->connect(CoreStringNames::get_singleton()->changed, this, "_navpoly_changed");
}
+ _navpoly_changed();
if (navigation && navpoly.is_valid() && enabled) {
nav_id = navigation->navpoly_add(navpoly, get_relative_transform_to_parent(navigation), this);
}
- //update_gizmo();
+
_change_notify("navpoly");
update_configuration_warning();
}
diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp
index 027d64b813..59cb16fe91 100644
--- a/scene/2d/parallax_background.cpp
+++ b/scene/2d/parallax_background.cpp
@@ -206,7 +206,9 @@ void ParallaxBackground::_bind_methods() {
ParallaxBackground::ParallaxBackground() {
- base_scale = Vector2(1, 1);
scale = 1.0;
set_layer(-1); //behind all by default
+
+ base_scale = Vector2(1, 1);
+ ignore_camera_zoom = false;
}
diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp
index 4276918f53..5eae43b2d5 100644
--- a/scene/2d/path_2d.cpp
+++ b/scene/2d/path_2d.cpp
@@ -303,7 +303,7 @@ void PathFollow2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_lookahead", "lookahead"), &PathFollow2D::set_lookahead);
ClassDB::bind_method(D_METHOD("get_lookahead"), &PathFollow2D::get_lookahead);
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_EXP_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset");
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index 8fe65f53a9..641cb161ca 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -327,6 +327,10 @@ void TileMap::update_dirty_quadrants() {
Ref<ShaderMaterial> mat = tile_set->tile_get_material(c.id);
int z_index = tile_set->tile_get_z_index(c.id);
+ if (tile_set->tile_get_tile_mode(c.id) == TileSet::AUTO_TILE) {
+ z_index += tile_set->autotile_get_z_index(c.id, Vector2(c.autotile_coord_x, c.autotile_coord_y));
+ }
+
RID canvas_item;
RID debug_canvas_item;
diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp
index 5e78368804..ac77ddb7ce 100644
--- a/scene/3d/area.cpp
+++ b/scene/3d/area.cpp
@@ -157,7 +157,9 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo
Map<ObjectID, BodyState>::Element *E = body_map.find(objid);
- ERR_FAIL_COND(!body_in && !E);
+ if (!body_in && !E) {
+ return; //likely removed from the tree
+ }
locked = true;
diff --git a/scene/3d/cpu_particles.cpp b/scene/3d/cpu_particles.cpp
index 8b4d201083..b07848e02e 100644
--- a/scene/3d/cpu_particles.cpp
+++ b/scene/3d/cpu_particles.cpp
@@ -217,7 +217,7 @@ String CPUParticles::get_configuration_warning() const {
if (!mesh_found) {
if (warnings != String())
warnings += "\n";
- warnings += "- " + TTR("Nothing is visible because no mesh has not been assigned.");
+ warnings += "- " + TTR("Nothing is visible because no mesh has been assigned.");
}
if (!anim_material_found && (get_param(PARAM_ANIM_SPEED) != 0.0 || get_param(PARAM_ANIM_OFFSET) != 0.0 ||
@@ -523,7 +523,7 @@ void CPUParticles::_particles_process(float p_delta) {
Basis velocity_xform;
if (!local_coords) {
emission_xform = get_global_transform();
- velocity_xform = emission_xform.basis.inverse().transposed();
+ velocity_xform = emission_xform.basis;
}
for (int i = 0; i < pcount; i++) {
@@ -691,7 +691,7 @@ void CPUParticles::_particles_process(float p_delta) {
if (flags[FLAG_DISABLE_Z]) {
p.velocity.z = 0.0;
- p.velocity.z = 0.0;
+ p.transform.origin.z = 0.0;
}
} else if (!p.active) {
@@ -757,15 +757,15 @@ void CPUParticles::_particles_process(float p_delta) {
}
Vector3 force = gravity;
- Vector3 pos = p.transform.origin;
+ Vector3 position = p.transform.origin;
if (flags[FLAG_DISABLE_Z]) {
- pos.z = 0.0;
+ position.z = 0.0;
}
//apply linear acceleration
force += p.velocity.length() > 0.0 ? p.velocity.normalized() * (parameters[PARAM_LINEAR_ACCEL] + tex_linear_accel) * Math::lerp(1.0f, rand_from_seed(alt_seed), randomness[PARAM_LINEAR_ACCEL]) : Vector3();
//apply radial acceleration
Vector3 org = emission_xform.origin;
- Vector3 diff = pos - org;
+ Vector3 diff = position - org;
force += diff.length() > 0.0 ? diff.normalized() * (parameters[PARAM_RADIAL_ACCEL] + tex_radial_accel) * Math::lerp(1.0f, rand_from_seed(alt_seed), randomness[PARAM_RADIAL_ACCEL]) : Vector3();
//apply tangential acceleration;
if (flags[FLAG_DISABLE_Z]) {
@@ -1361,9 +1361,9 @@ void CPUParticles::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angle_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_ANGLE);
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "angle_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_ANGLE);
ADD_GROUP("Scale", "");
- ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE);
- ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE);
- ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE);
+ ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_amount_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE);
ADD_GROUP("Color", "");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "color_ramp", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_color_ramp", "get_color_ramp");
diff --git a/scene/3d/listener.h b/scene/3d/listener.h
index 8047971ebd..9901f7635c 100644
--- a/scene/3d/listener.h
+++ b/scene/3d/listener.h
@@ -71,8 +71,6 @@ public:
void set_visible_layers(uint32_t p_layers);
uint32_t get_visible_layers() const;
- Vector<Plane> get_frustum() const;
-
Listener();
~Listener();
};
diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp
index 339a434a6e..b732c3b8b7 100644
--- a/scene/3d/path.cpp
+++ b/scene/3d/path.cpp
@@ -252,7 +252,7 @@ void PathFollow::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow::set_loop);
ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow::has_loop);
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_EXP_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset");
@@ -476,7 +476,7 @@ String OrientedPathFollow::get_configuration_warning() const {
} else {
Path *path = Object::cast_to<Path>(get_parent());
if (path->get_curve().is_valid() && !path->get_curve()->is_up_vector_enabled()) {
- return TTR("OrientedPathFollow requires up vectors enabled in its parent Path.");
+ return TTR("OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve resource.");
}
}
diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp
index 02c6b1d969..8fd86c940c 100644
--- a/scene/3d/physics_joint.cpp
+++ b/scene/3d/physics_joint.cpp
@@ -707,6 +707,9 @@ void Generic6DOFJoint::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_flag_z", "flag", "value"), &Generic6DOFJoint::set_flag_z);
ClassDB::bind_method(D_METHOD("get_flag_z", "flag"), &Generic6DOFJoint::get_flag_z);
+ ClassDB::bind_method(D_METHOD("set_precision", "precision"), &Generic6DOFJoint::set_precision);
+ ClassDB::bind_method(D_METHOD("get_precision"), &Generic6DOFJoint::get_precision);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_limit_x/upper_distance"), "set_param_x", "get_param_x", PARAM_LINEAR_UPPER_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "linear_limit_x/lower_distance"), "set_param_x", "get_param_x", PARAM_LINEAR_LOWER_LIMIT);
@@ -795,6 +798,8 @@ void Generic6DOFJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_z/damping"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_spring_z/equilibrium_point"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "precision", PROPERTY_HINT_RANGE, "1,99999,1"), "set_precision", "get_precision");
+
BIND_ENUM_CONSTANT(PARAM_LINEAR_LOWER_LIMIT);
BIND_ENUM_CONSTANT(PARAM_LINEAR_UPPER_LIMIT);
BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_SOFTNESS);
@@ -907,6 +912,14 @@ bool Generic6DOFJoint::get_flag_z(Flag p_flag) const {
return flags_z[p_flag];
}
+void Generic6DOFJoint::set_precision(int p_precision) {
+ precision = p_precision;
+
+ PhysicsServer::get_singleton()->generic_6dof_joint_set_precision(
+ get_joint(),
+ precision);
+}
+
RID Generic6DOFJoint::_configure_joint(PhysicsBody *body_a, PhysicsBody *body_b) {
Transform gt = get_global_transform();
@@ -941,7 +954,8 @@ RID Generic6DOFJoint::_configure_joint(PhysicsBody *body_a, PhysicsBody *body_b)
return j;
}
-Generic6DOFJoint::Generic6DOFJoint() {
+Generic6DOFJoint::Generic6DOFJoint() :
+ precision(1) {
set_param_x(PARAM_LINEAR_LOWER_LIMIT, 0);
set_param_x(PARAM_LINEAR_UPPER_LIMIT, 0);
diff --git a/scene/3d/physics_joint.h b/scene/3d/physics_joint.h
index ee4ca28658..753795da90 100644
--- a/scene/3d/physics_joint.h
+++ b/scene/3d/physics_joint.h
@@ -305,6 +305,8 @@ protected:
float params_z[PARAM_MAX];
bool flags_z[FLAG_MAX];
+ int precision;
+
virtual RID _configure_joint(PhysicsBody *body_a, PhysicsBody *body_b);
static void _bind_methods();
@@ -327,6 +329,11 @@ public:
void set_flag_z(Flag p_flag, bool p_enabled);
bool get_flag_z(Flag p_flag) const;
+ void set_precision(int p_precision);
+ int get_precision() const {
+ return precision;
+ }
+
Generic6DOFJoint();
};
diff --git a/scene/3d/remote_transform.cpp b/scene/3d/remote_transform.cpp
index c12e49fb47..490fcf24fd 100644
--- a/scene/3d/remote_transform.cpp
+++ b/scene/3d/remote_transform.cpp
@@ -63,38 +63,40 @@ void RemoteTransform::_update_remote() {
if (update_remote_position && update_remote_rotation && update_remote_scale) {
n->set_global_transform(get_global_transform());
} else {
- Transform n_trans = n->get_global_transform();
Transform our_trans = get_global_transform();
- if (!update_remote_position)
- our_trans.set_origin(n_trans.get_origin());
+ if (update_remote_rotation)
+ n->set_rotation(our_trans.basis.get_rotation());
- n->set_global_transform(our_trans);
+ if (update_remote_scale)
+ n->set_scale(our_trans.basis.get_scale());
- if (!update_remote_rotation)
- n->set_rotation(n_trans.basis.get_rotation());
+ if (update_remote_position) {
+ Transform n_trans = n->get_global_transform();
- if (!update_remote_scale)
- n->set_scale(n_trans.basis.get_scale());
+ n_trans.set_origin(our_trans.get_origin());
+ n->set_global_transform(n_trans);
+ }
}
} else {
if (update_remote_position && update_remote_rotation && update_remote_scale) {
- n->set_global_transform(get_global_transform());
+ n->set_transform(get_transform());
} else {
- Transform n_trans = n->get_transform();
Transform our_trans = get_transform();
- if (!update_remote_position)
- our_trans.set_origin(n_trans.get_origin());
+ if (update_remote_rotation)
+ n->set_rotation(our_trans.basis.get_rotation());
- n->set_transform(our_trans);
+ if (update_remote_scale)
+ n->set_scale(our_trans.basis.get_scale());
- if (!update_remote_rotation)
- n->set_rotation(n_trans.basis.get_rotation());
+ if (update_remote_position) {
+ Transform n_trans = n->get_transform();
- if (!update_remote_scale)
- n->set_scale(n_trans.basis.get_scale());
+ n_trans.set_origin(our_trans.get_origin());
+ n->set_transform(n_trans);
+ }
}
}
}
diff --git a/scene/3d/soft_body.cpp b/scene/3d/soft_body.cpp
index 1e730d0b3d..835a874323 100644
--- a/scene/3d/soft_body.cpp
+++ b/scene/3d/soft_body.cpp
@@ -401,7 +401,7 @@ String SoftBody::get_configuration_warning() const {
}
Transform 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(0).length() - 1.0) > 0.05)) {
+ 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)) {
if (!warning.empty())
warning += "\n\n";
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 5bde224ce3..7b4c7de029 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -463,9 +463,9 @@ void Sprite3D::_draw() {
Plane tangent;
if (axis == Vector3::AXIS_X) {
- tangent = Plane(0, 0, -1, -1);
+ tangent = Plane(0, 0, -1, 1);
} else {
- tangent = Plane(1, 0, 0, -1);
+ tangent = Plane(1, 0, 0, 1);
}
RID mat = SpatialMaterial::get_material_rid_for_2d(get_draw_flag(FLAG_SHADED), get_draw_flag(FLAG_TRANSPARENT), get_draw_flag(FLAG_DOUBLE_SIDED), get_alpha_cut_mode() == ALPHA_CUT_DISCARD, get_alpha_cut_mode() == ALPHA_CUT_OPAQUE_PREPASS);
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 64202ba0e3..cfc3b2f4ce 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -1120,6 +1120,15 @@ void AnimationPlayer::queue(const StringName &p_name) {
queued.push_back(p_name);
}
+PoolVector<String> AnimationPlayer::get_queue() {
+ PoolVector<String> ret;
+ for (List<StringName>::Element *E = queued.front(); E; E = E->next()) {
+ ret.push_back(E->get());
+ }
+
+ return ret;
+}
+
void AnimationPlayer::clear_queue() {
queued.clear();
}
@@ -1418,6 +1427,8 @@ StringName AnimationPlayer::find_animation(const Ref<Animation> &p_animation) co
}
void AnimationPlayer::set_autoplay(const String &p_name) {
+ if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint())
+ WARN_PRINT("Setting autoplay after the node has been added to the scene has no effect.");
autoplay = p_name;
}
@@ -1603,6 +1614,7 @@ void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_assigned_animation", "anim"), &AnimationPlayer::set_assigned_animation);
ClassDB::bind_method(D_METHOD("get_assigned_animation"), &AnimationPlayer::get_assigned_animation);
ClassDB::bind_method(D_METHOD("queue", "name"), &AnimationPlayer::queue);
+ ClassDB::bind_method(D_METHOD("get_queue"), &AnimationPlayer::get_queue);
ClassDB::bind_method(D_METHOD("clear_queue"), &AnimationPlayer::clear_queue);
ClassDB::bind_method(D_METHOD("set_active", "active"), &AnimationPlayer::set_active);
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index f50b2454ec..b3bf8b1e22 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -312,6 +312,7 @@ public:
void play(const StringName &p_name = StringName(), float p_custom_blend = -1, float p_custom_scale = 1.0, bool p_from_end = false);
void play_backwards(const StringName &p_name = StringName(), float p_custom_blend = -1);
void queue(const StringName &p_name);
+ PoolVector<String> get_queue();
void clear_queue();
void stop(bool p_reset = true);
bool is_playing() const;
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp
index 524784df53..6adfb94695 100644
--- a/scene/animation/animation_tree_player.cpp
+++ b/scene/animation/animation_tree_player.cpp
@@ -401,6 +401,9 @@ void AnimationTreePlayer::_notification(int p_what) {
case NOTIFICATION_ENTER_TREE: {
+ ERR_EXPLAIN("AnimationTreePlayer has been deprecated. Use AnimationTree instead.");
+ WARN_DEPRECATED
+
if (!processing) {
//make sure that a previous process state was not saved
//only process if "processing" is set
@@ -409,12 +412,14 @@ void AnimationTreePlayer::_notification(int p_what) {
}
} break;
case NOTIFICATION_READY: {
+
dirty_caches = true;
if (master != NodePath()) {
_update_sources();
}
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
+
if (animation_process_mode == ANIMATION_PROCESS_PHYSICS)
break;
@@ -1715,6 +1720,11 @@ Error AnimationTreePlayer::node_rename(const StringName &p_node, const StringNam
return OK;
}
+String AnimationTreePlayer::get_configuration_warning() const {
+
+ return TTR("This node has been deprecated. Use AnimationTree instead.");
+}
+
void AnimationTreePlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_node", "type", "id"), &AnimationTreePlayer::add_node);
diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h
index d2d7b1c9ec..4e4c876e87 100644
--- a/scene/animation/animation_tree_player.h
+++ b/scene/animation/animation_tree_player.h
@@ -343,6 +343,8 @@ public:
int node_get_input_count(const StringName &p_node) const;
StringName node_get_input_source(const StringName &p_node, int p_input) const;
+ String get_configuration_warning() const;
+
/* ANIMATION NODE */
void animation_node_set_animation(const StringName &p_node, const Ref<Animation> &p_animation);
Ref<Animation> animation_node_get_animation(const StringName &p_node) const;
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index 1ac19774f7..dc85c8e641 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -595,6 +595,16 @@ void ButtonGroup::get_buttons(List<BaseButton *> *r_buttons) {
}
}
+Array ButtonGroup::_get_buttons() {
+
+ Array btns;
+ for (Set<BaseButton *>::Element *E = buttons.front(); E; E = E->next()) {
+ btns.push_back(E->get());
+ }
+
+ return btns;
+}
+
BaseButton *ButtonGroup::get_pressed_button() {
for (Set<BaseButton *>::Element *E = buttons.front(); E; E = E->next()) {
@@ -608,6 +618,7 @@ BaseButton *ButtonGroup::get_pressed_button() {
void ButtonGroup::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_pressed_button"), &ButtonGroup::get_pressed_button);
+ ClassDB::bind_method(D_METHOD("get_buttons"), &ButtonGroup::_get_buttons);
}
ButtonGroup::ButtonGroup() {
diff --git a/scene/gui/base_button.h b/scene/gui/base_button.h
index a131e719ad..272c07f68a 100644
--- a/scene/gui/base_button.h
+++ b/scene/gui/base_button.h
@@ -143,6 +143,7 @@ protected:
public:
BaseButton *get_pressed_button();
void get_buttons(List<BaseButton *> *r_buttons);
+ Array _get_buttons();
ButtonGroup();
};
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index c5d3def4c1..523e07087b 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -204,22 +204,9 @@ void ColorPicker::_update_presets() {
preset->draw_texture_rect(get_icon("preset_bg", "ColorPicker"), Rect2(Point2(), preset_size), true);
-#ifdef TOOLS_ENABLED
- if (Engine::get_singleton()->is_editor_hint()) {
- PoolColorArray arr_to_save = PoolColorArray();
-
- for (int i = 0; i < presets.size(); i++) {
- preset->draw_rect(Rect2(Point2(size.width * i, 0), size), presets[i]);
- arr_to_save.insert(i, presets[i]);
- }
-
- EditorSettings::get_singleton()->set_project_metadata("color_picker", "presets", arr_to_save);
- }
-#else
for (int i = 0; i < presets.size(); i++) {
preset->draw_rect(Rect2(Point2(size.width * i, 0), size), presets[i]);
}
-#endif
}
void ColorPicker::_text_type_toggled() {
@@ -251,6 +238,38 @@ void ColorPicker::add_preset(const Color &p_color) {
preset->update();
if (presets.size() == 10)
bt_add_preset->hide();
+
+#ifdef TOOLS_ENABLED
+ if (Engine::get_singleton()->is_editor_hint()) {
+ PoolColorArray arr_to_save = get_presets();
+ EditorSettings::get_singleton()->set_project_metadata("color_picker", "presets", arr_to_save);
+ }
+#endif
+}
+
+void ColorPicker::erase_preset(const Color &p_color) {
+
+ if (presets.find(p_color)) {
+ presets.erase(presets.find(p_color));
+ preset->update();
+
+#ifdef TOOLS_ENABLED
+ if (Engine::get_singleton()->is_editor_hint()) {
+ PoolColorArray arr_to_save = get_presets();
+ EditorSettings::get_singleton()->set_project_metadata("color_picker", "presets", arr_to_save);
+ }
+#endif
+ }
+}
+
+PoolColorArray ColorPicker::get_presets() const {
+
+ PoolColorArray arr;
+ arr.resize(presets.size());
+ for (int i = 0; i < presets.size(); i++) {
+ arr.set(i, presets[i]);
+ }
+ return arr;
}
void ColorPicker::set_raw_mode(bool p_enabled) {
@@ -444,14 +463,15 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) {
if (bev->is_pressed() && bev->get_button_index() == BUTTON_LEFT) {
int index = bev->get_position().x / (preset->get_size().x / presets.size());
set_pick_color(presets[index]);
+ _update_color();
+ emit_signal("color_changed", color);
} else if (bev->is_pressed() && bev->get_button_index() == BUTTON_RIGHT) {
int index = bev->get_position().x / (preset->get_size().x / presets.size());
- presets.erase(presets[index]);
- preset->update();
+ Color clicked_preset = presets[index];
+ erase_preset(clicked_preset);
+ emit_signal("preset_removed", clicked_preset);
bt_add_preset->show();
}
- _update_color();
- emit_signal("color_changed", color);
}
Ref<InputEventMouseMotion> mev = p_event;
@@ -501,6 +521,7 @@ void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
void ColorPicker::_add_preset_pressed() {
add_preset(color);
+ emit_signal("preset_added", color);
}
void ColorPicker::_screen_pick_pressed() {
@@ -553,6 +574,8 @@ void ColorPicker::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_edit_alpha", "show"), &ColorPicker::set_edit_alpha);
ClassDB::bind_method(D_METHOD("is_editing_alpha"), &ColorPicker::is_editing_alpha);
ClassDB::bind_method(D_METHOD("add_preset", "color"), &ColorPicker::add_preset);
+ ClassDB::bind_method(D_METHOD("erase_preset", "color"), &ColorPicker::erase_preset);
+ ClassDB::bind_method(D_METHOD("get_presets"), &ColorPicker::get_presets);
ClassDB::bind_method(D_METHOD("_value_changed"), &ColorPicker::_value_changed);
ClassDB::bind_method(D_METHOD("_html_entered"), &ColorPicker::_html_entered);
ClassDB::bind_method(D_METHOD("_text_type_toggled"), &ColorPicker::_text_type_toggled);
@@ -575,6 +598,8 @@ void ColorPicker::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "deferred_mode"), "set_deferred_mode", "is_deferred_mode");
ADD_SIGNAL(MethodInfo("color_changed", PropertyInfo(Variant::COLOR, "color")));
+ ADD_SIGNAL(MethodInfo("preset_added", PropertyInfo(Variant::COLOR, "color")));
+ ADD_SIGNAL(MethodInfo("preset_removed", PropertyInfo(Variant::COLOR, "color")));
}
ColorPicker::ColorPicker() :
diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h
index 0166da7118..e32c830434 100644
--- a/scene/gui/color_picker.h
+++ b/scene/gui/color_picker.h
@@ -105,6 +105,9 @@ public:
Color get_pick_color() const;
void add_preset(const Color &p_color);
+ void erase_preset(const Color &p_color);
+ PoolColorArray get_presets() const;
+
void set_raw_mode(bool p_enabled);
bool is_raw_mode() const;
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 79e1d35b94..a580d89439 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -451,6 +451,11 @@ void Control::_update_canvas_item_transform() {
Transform2D xform = _get_internal_transform();
xform[2] += get_position();
+ // We use a little workaround to avoid flickering when moving the pivot with _edit_set_pivot()
+ if (is_inside_tree() && Math::abs(Math::sin(data.rotation * 4.0f)) < 0.00001f && get_viewport()->is_snap_controls_to_pixels_enabled()) {
+ xform[2] = xform[2].round();
+ }
+
VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(), xform);
}
@@ -1336,11 +1341,6 @@ void Control::_size_changed() {
new_size_cache.height = minimum_size.height;
}
- // We use a little workaround to avoid flickering when moving the pivot with _edit_set_pivot()
- if (is_inside_tree() && Math::abs(Math::sin(data.rotation * 4.0f)) < 0.00001f && get_viewport()->is_snap_controls_to_pixels_enabled()) {
- new_size_cache = new_size_cache.round();
- new_pos_cache = new_pos_cache.round();
- }
bool pos_changed = new_pos_cache != data.pos_cache;
bool size_changed = new_size_cache != data.size_cache;
@@ -1740,10 +1740,10 @@ Rect2 Control::_compute_child_rect(const float p_anchors[4], const float p_margi
void Control::_compute_margins(Rect2 p_rect, const float p_anchors[4], float (&r_margins)[4]) {
Size2 parent_rect_size = get_parent_anchorable_rect().size;
- r_margins[0] = Math::floor(p_rect.position.x - (p_anchors[0] * parent_rect_size.x));
- r_margins[1] = Math::floor(p_rect.position.y - (p_anchors[1] * parent_rect_size.y));
- r_margins[2] = Math::floor(p_rect.position.x + p_rect.size.x - (p_anchors[2] * parent_rect_size.x));
- r_margins[3] = Math::floor(p_rect.position.y + p_rect.size.y - (p_anchors[3] * parent_rect_size.y));
+ r_margins[0] = p_rect.position.x - (p_anchors[0] * parent_rect_size.x);
+ r_margins[1] = p_rect.position.y - (p_anchors[1] * parent_rect_size.y);
+ r_margins[2] = p_rect.position.x + p_rect.size.x - (p_anchors[2] * parent_rect_size.x);
+ r_margins[3] = p_rect.position.y + p_rect.size.y - (p_anchors[3] * parent_rect_size.y);
}
void Control::set_position(const Size2 &p_point) {
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index b3bebc88ec..eee3213fe7 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -1339,21 +1339,25 @@ GraphEdit::GraphEdit() {
zoom_minus = memnew(ToolButton);
zoom_hb->add_child(zoom_minus);
+ zoom_minus->set_tooltip(RTR("Zoom Out"));
zoom_minus->connect("pressed", this, "_zoom_minus");
zoom_minus->set_focus_mode(FOCUS_NONE);
zoom_reset = memnew(ToolButton);
zoom_hb->add_child(zoom_reset);
+ zoom_reset->set_tooltip(RTR("Zoom Reset"));
zoom_reset->connect("pressed", this, "_zoom_reset");
zoom_reset->set_focus_mode(FOCUS_NONE);
zoom_plus = memnew(ToolButton);
zoom_hb->add_child(zoom_plus);
+ zoom_plus->set_tooltip(RTR("Zoom In"));
zoom_plus->connect("pressed", this, "_zoom_plus");
zoom_plus->set_focus_mode(FOCUS_NONE);
snap_button = memnew(ToolButton);
snap_button->set_toggle_mode(true);
+ snap_button->set_tooltip(RTR("Enable snap and show grid."));
snap_button->connect("pressed", this, "_snap_toggled");
snap_button->set_pressed(true);
snap_button->set_focus_mode(FOCUS_NONE);
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 299c304c5f..42d7f1b080 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -831,7 +831,6 @@ void LineEdit::_notification(int p_what) {
OS::get_singleton()->set_ime_active(true);
OS::get_singleton()->set_ime_position(get_global_position() + Point2(using_placeholder ? 0 : x_ofs, y_ofs + caret_height));
- OS::get_singleton()->set_ime_intermediate_text_callback(_ime_text_callback, this);
}
} break;
case NOTIFICATION_FOCUS_ENTER: {
@@ -843,7 +842,6 @@ void LineEdit::_notification(int p_what) {
OS::get_singleton()->set_ime_active(true);
Point2 cursor_pos = Point2(get_cursor_position(), 1) * get_minimum_size().height;
OS::get_singleton()->set_ime_position(get_global_position() + cursor_pos);
- OS::get_singleton()->set_ime_intermediate_text_callback(_ime_text_callback, this);
if (OS::get_singleton()->has_virtual_keyboard())
OS::get_singleton()->show_virtual_keyboard(text, get_global_rect());
@@ -852,7 +850,6 @@ void LineEdit::_notification(int p_what) {
case NOTIFICATION_FOCUS_EXIT: {
OS::get_singleton()->set_ime_position(Point2());
- OS::get_singleton()->set_ime_intermediate_text_callback(NULL, NULL);
OS::get_singleton()->set_ime_active(false);
ime_text = "";
ime_selection = Point2();
@@ -861,6 +858,12 @@ void LineEdit::_notification(int p_what) {
OS::get_singleton()->hide_virtual_keyboard();
} break;
+ case MainLoop::NOTIFICATION_OS_IME_UPDATE: {
+
+ ime_text = OS::get_singleton()->get_ime_text();
+ ime_selection = OS::get_singleton()->get_ime_selection();
+ update();
+ } break;
}
}
@@ -1461,13 +1464,6 @@ void LineEdit::set_right_icon(const Ref<Texture> &p_icon) {
update();
}
-void LineEdit::_ime_text_callback(void *p_self, String p_text, Point2 p_selection) {
- LineEdit *self = (LineEdit *)p_self;
- self->ime_text = p_text;
- self->ime_selection = p_selection;
- self->update();
-}
-
void LineEdit::_text_changed() {
if (expand_to_text_length)
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index 5294d99da0..ddcdeda8c0 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -122,7 +122,6 @@ private:
Timer *caret_blink_timer;
- static void _ime_text_callback(void *p_self, String p_text, Point2 p_selection);
void _text_changed();
void _emit_text_change();
bool expand_to_text_length;
diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp
index 95ec618c3b..b4cb297900 100644
--- a/scene/gui/menu_button.cpp
+++ b/scene/gui/menu_button.cpp
@@ -71,13 +71,24 @@ PopupMenu *MenuButton::get_popup() const {
return popup;
}
+void MenuButton::_set_items(const Array &p_items) {
+
+ popup->set("items", p_items);
+}
+
Array MenuButton::_get_items() const {
return popup->get("items");
}
-void MenuButton::_set_items(const Array &p_items) {
- popup->set("items", p_items);
+void MenuButton::set_switch_on_hover(bool p_enabled) {
+
+ switch_on_hover = p_enabled;
+}
+
+bool MenuButton::is_switch_on_hover() {
+
+ return switch_on_hover;
}
void MenuButton::_bind_methods() {
@@ -86,9 +97,12 @@ void MenuButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("_unhandled_key_input"), &MenuButton::_unhandled_key_input);
ClassDB::bind_method(D_METHOD("_set_items"), &MenuButton::_set_items);
ClassDB::bind_method(D_METHOD("_get_items"), &MenuButton::_get_items);
+ ClassDB::bind_method(D_METHOD("set_switch_on_hover", "enable"), &MenuButton::set_switch_on_hover);
+ ClassDB::bind_method(D_METHOD("is_switch_on_hover"), &MenuButton::is_switch_on_hover);
ClassDB::bind_method(D_METHOD("set_disable_shortcuts", "disabled"), &MenuButton::set_disable_shortcuts);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "switch_on_hover"), "set_switch_on_hover", "is_switch_on_hover");
ADD_SIGNAL(MethodInfo("about_to_show"));
}
@@ -100,6 +114,7 @@ void MenuButton::set_disable_shortcuts(bool p_disabled) {
MenuButton::MenuButton() {
+ switch_on_hover = false;
set_flat(true);
set_disable_shortcuts(false);
set_enabled_focus_mode(FOCUS_NONE);
diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h
index 0636accfee..abc49f4988 100644
--- a/scene/gui/menu_button.h
+++ b/scene/gui/menu_button.h
@@ -41,6 +41,7 @@ class MenuButton : public Button {
GDCLASS(MenuButton, Button);
bool clicked;
+ bool switch_on_hover;
bool disable_shortcuts;
PopupMenu *popup;
@@ -57,6 +58,8 @@ public:
virtual void pressed();
PopupMenu *get_popup() const;
+ void set_switch_on_hover(bool p_enabled);
+ bool is_switch_on_hover();
void set_disable_shortcuts(bool p_disabled);
MenuButton();
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 17de346f51..db890bf1c8 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -765,20 +765,19 @@ void RichTextLabel::_update_scroll() {
if (exceeds) {
scroll_visible = true;
- main->first_invalid_line = 0;
scroll_w = vscroll->get_combined_minimum_size().width;
vscroll->show();
vscroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -scroll_w);
- _validate_line_caches(main);
-
} else {
-
scroll_visible = false;
- vscroll->hide();
scroll_w = 0;
- _validate_line_caches(main);
+ vscroll->hide();
}
+
+ main->first_invalid_line = 0; //invalidate ALL
+ _validate_line_caches(main);
}
+ scroll_updated = true;
}
void RichTextLabel::_notification(int p_what) {
@@ -931,6 +930,7 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event) {
if (true) {
if (b->is_pressed() && !b->is_doubleclick()) {
+ scroll_updated = false;
int line = 0;
Item *item = NULL;
@@ -939,12 +939,7 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event) {
if (item) {
- Variant meta;
- if (!outside && _find_meta(item, &meta)) {
- //meta clicked
-
- emit_signal("meta_clicked", meta);
- } else if (selection.enabled) {
+ if (selection.enabled) {
selection.click = item;
selection.click_char = line;
@@ -993,6 +988,24 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event) {
} else if (!b->is_pressed()) {
selection.click = NULL;
+
+ if (!b->is_doubleclick() && !scroll_updated) {
+ int line = 0;
+ Item *item = NULL;
+
+ bool outside;
+ _find_click(main, b->get_position(), &item, &line, &outside);
+
+ if (item) {
+
+ Variant meta;
+ if (!outside && _find_meta(item, &meta)) {
+ //meta clicked
+
+ emit_signal("meta_clicked", meta);
+ }
+ }
+ }
}
}
}
@@ -1616,7 +1629,6 @@ void RichTextLabel::clear() {
main->lines.clear();
main->lines.resize(1);
main->first_invalid_line = 0;
- scroll_w = 0;
update();
selection.click = NULL;
selection.active = false;
@@ -2327,6 +2339,7 @@ RichTextLabel::RichTextLabel() {
updating_scroll = false;
scroll_active = true;
scroll_w = 0;
+ scroll_updated = false;
vscroll = memnew(VScrollBar);
add_child(vscroll);
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index c2e5712b9d..7c30738e2d 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -225,6 +225,7 @@ private:
bool scroll_following;
bool scroll_active;
int scroll_w;
+ bool scroll_updated;
bool updating_scroll;
int current_idx;
int visible_line_count;
diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp
index ace22dddff..4f43bb0581 100644
--- a/scene/gui/spin_box.cpp
+++ b/scene/gui/spin_box.cpp
@@ -110,6 +110,9 @@ void SpinBox::_gui_input(const Ref<InputEvent> &p_event) {
range_click_timer->start();
line_edit->grab_focus();
+
+ drag.allowed = true;
+ drag.capture_pos = mb->get_position();
} break;
case BUTTON_RIGHT: {
@@ -133,14 +136,7 @@ void SpinBox::_gui_input(const Ref<InputEvent> &p_event) {
}
}
- if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == 1) {
-
- //set_default_cursor_shape(CURSOR_VSIZE);
- Vector2 cpos = Vector2(mb->get_position().x, mb->get_position().y);
- drag.mouse_pos = cpos;
- }
-
- if (mb.is_valid() && !mb->is_pressed() && mb->get_button_index() == 1) {
+ if (mb.is_valid() && !mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) {
//set_default_cursor_shape(CURSOR_ARROW);
range_click_timer->stop();
@@ -150,32 +146,24 @@ void SpinBox::_gui_input(const Ref<InputEvent> &p_event) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
warp_mouse(drag.capture_pos);
}
+ drag.allowed = false;
}
Ref<InputEventMouseMotion> mm = p_event;
- if (mm.is_valid() && mm->get_button_mask() & 1) {
-
- Vector2 cpos = mm->get_position();
+ if (mm.is_valid() && mm->get_button_mask() & BUTTON_MASK_LEFT) {
if (drag.enabled) {
- float diff_y = drag.mouse_pos.y - cpos.y;
- diff_y = Math::pow(ABS(diff_y), 1.8f) * SGN(diff_y);
- diff_y *= 0.1;
-
- drag.mouse_pos = cpos;
- drag.base_val = CLAMP(drag.base_val + get_step() * diff_y, get_min(), get_max());
-
- set_value(drag.base_val);
-
- } else if (drag.mouse_pos.distance_to(cpos) > 2) {
+ drag.diff_y += mm->get_relative().y;
+ float diff_y = -0.01 * Math::pow(ABS(drag.diff_y), 1.8f) * SGN(drag.diff_y);
+ set_value(CLAMP(drag.base_val + get_step() * diff_y, get_min(), get_max()));
+ } else if (drag.allowed && drag.capture_pos.distance_to(mm->get_position()) > 2) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED);
drag.enabled = true;
drag.base_val = get_value();
- drag.mouse_pos = cpos;
- drag.capture_pos = cpos;
+ drag.diff_y = 0;
}
}
}
diff --git a/scene/gui/spin_box.h b/scene/gui/spin_box.h
index f1ee26d9f3..6425af7158 100644
--- a/scene/gui/spin_box.h
+++ b/scene/gui/spin_box.h
@@ -54,10 +54,10 @@ class SpinBox : public Range {
struct Drag {
float base_val;
+ bool allowed;
bool enabled;
- Vector2 from;
- Vector2 mouse_pos;
Vector2 capture_pos;
+ float diff_y;
} drag;
void _line_edit_focus_exit();
diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp
index 3554f04cc0..c3265d3ed5 100644
--- a/scene/gui/split_container.cpp
+++ b/scene/gui/split_container.cpp
@@ -94,12 +94,15 @@ void SplitContainer::_resort() {
}
// Compute the final middle separation
- int clamped_split_offset = CLAMP(split_offset, ms_first[axis] - no_offset_middle_sep, (get_size()[axis] - ms_second[axis] - sep) - no_offset_middle_sep);
- middle_sep = no_offset_middle_sep + clamped_split_offset;
- if (!collapsed && should_clamp_split_offset) {
- split_offset = clamped_split_offset;
- _change_notify("split_offset");
- should_clamp_split_offset = false;
+ middle_sep = no_offset_middle_sep;
+ if (!collapsed) {
+ int clamped_split_offset = CLAMP(split_offset, ms_first[axis] - no_offset_middle_sep, (get_size()[axis] - ms_second[axis] - sep) - no_offset_middle_sep);
+ middle_sep += clamped_split_offset;
+ if (should_clamp_split_offset) {
+ split_offset = clamped_split_offset;
+ _change_notify("split_offset");
+ should_clamp_split_offset = false;
+ }
}
if (vertical) {
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 5fe6fcdfac..fef29b7e6c 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -1412,7 +1412,6 @@ void TextEdit::_notification(int p_what) {
if (has_focus()) {
OS::get_singleton()->set_ime_active(true);
OS::get_singleton()->set_ime_position(get_global_position() + cursor_pos + Point2(0, get_row_height()));
- OS::get_singleton()->set_ime_intermediate_text_callback(_ime_text_callback, this);
}
} break;
@@ -1425,7 +1424,6 @@ void TextEdit::_notification(int p_what) {
OS::get_singleton()->set_ime_active(true);
Point2 cursor_pos = Point2(cursor_get_column(), cursor_get_line()) * get_row_height();
OS::get_singleton()->set_ime_position(get_global_position() + cursor_pos);
- OS::get_singleton()->set_ime_intermediate_text_callback(_ime_text_callback, this);
if (OS::get_singleton()->has_virtual_keyboard())
OS::get_singleton()->show_virtual_keyboard(get_text(), get_global_rect());
@@ -1433,7 +1431,6 @@ void TextEdit::_notification(int p_what) {
case NOTIFICATION_FOCUS_EXIT: {
OS::get_singleton()->set_ime_position(Point2());
- OS::get_singleton()->set_ime_intermediate_text_callback(NULL, NULL);
OS::get_singleton()->set_ime_active(false);
ime_text = "";
ime_selection = Point2();
@@ -1441,14 +1438,13 @@ void TextEdit::_notification(int p_what) {
if (OS::get_singleton()->has_virtual_keyboard())
OS::get_singleton()->hide_virtual_keyboard();
} break;
- }
-}
+ case MainLoop::NOTIFICATION_OS_IME_UPDATE: {
-void TextEdit::_ime_text_callback(void *p_self, String p_text, Point2 p_selection) {
- TextEdit *self = (TextEdit *)p_self;
- self->ime_text = p_text;
- self->ime_selection = p_selection;
- self->update();
+ ime_text = OS::get_singleton()->get_ime_text();
+ ime_selection = OS::get_singleton()->get_ime_selection();
+ update();
+ } break;
+ }
}
void TextEdit::_consume_pair_symbol(CharType ch) {
@@ -5758,6 +5754,7 @@ void TextEdit::_update_completion_candidates() {
completion_base = s;
Vector<float> sim_cache;
bool single_quote = s.begins_with("'");
+ Vector<String> completion_options_casei;
for (int i = 0; i < completion_strings.size(); i++) {
if (single_quote && completion_strings[i].is_quoted()) {
@@ -5766,9 +5763,13 @@ void TextEdit::_update_completion_candidates() {
if (completion_strings[i].begins_with(s)) {
completion_options.push_back(completion_strings[i]);
+ } else if (completion_strings[i].to_lower().begins_with(s.to_lower())) {
+ completion_options_casei.push_back(completion_strings[i]);
}
}
+ completion_options.append_array(completion_options_casei);
+
if (completion_options.size() == 0) {
for (int i = 0; i < completion_strings.size(); i++) {
if (s.is_subsequence_of(completion_strings[i])) {
@@ -6040,7 +6041,10 @@ void TextEdit::menu_option(int p_option) {
case MENU_UNDO: {
undo();
} break;
- };
+ case MENU_REDO: {
+ redo();
+ }
+ }
}
void TextEdit::set_select_identifiers_on_hover(bool p_enable) {
@@ -6216,6 +6220,7 @@ void TextEdit::_bind_methods() {
BIND_ENUM_CONSTANT(MENU_CLEAR);
BIND_ENUM_CONSTANT(MENU_SELECT_ALL);
BIND_ENUM_CONSTANT(MENU_UNDO);
+ BIND_ENUM_CONSTANT(MENU_REDO);
BIND_ENUM_CONSTANT(MENU_MAX);
GLOBAL_DEF("gui/timers/text_edit_idle_detect_sec", 3);
@@ -6344,6 +6349,7 @@ TextEdit::TextEdit() {
menu->add_item(RTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
+ menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
menu->connect("id_pressed", this, "menu_option");
}
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index 8a508a8738..f069ffc167 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -380,8 +380,6 @@ private:
void _scroll_lines_up();
void _scroll_lines_down();
- static void _ime_text_callback(void *p_self, String p_text, Point2 p_selection);
-
//void mouse_motion(const Point& p_pos, const Point& p_rel, int p_button_mask);
Size2 get_minimum_size() const;
@@ -444,6 +442,7 @@ public:
MENU_CLEAR,
MENU_SELECT_ALL,
MENU_UNDO,
+ MENU_REDO,
MENU_MAX
};
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 3f664bab10..be4878588e 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -639,6 +639,7 @@ void SceneTree::_notification(int p_notification) {
}
} break;
case NOTIFICATION_OS_MEMORY_WARNING:
+ case NOTIFICATION_OS_IME_UPDATE:
case NOTIFICATION_WM_MOUSE_ENTER:
case NOTIFICATION_WM_MOUSE_EXIT:
case NOTIFICATION_WM_FOCUS_IN:
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 8545efb966..5b1c2d8020 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -189,7 +189,7 @@ Viewport::GUI::GUI() {
dragging = false;
mouse_focus = NULL;
mouse_click_grabber = NULL;
- mouse_focus_button = -1;
+ mouse_focus_mask = 0;
key_focus = NULL;
mouse_over = NULL;
@@ -671,15 +671,7 @@ void Viewport::_notification(int p_what) {
case SceneTree::NOTIFICATION_WM_FOCUS_OUT: {
if (gui.mouse_focus) {
//if mouse is being pressed, send a release event
- Ref<InputEventMouseButton> mb;
- mb.instance();
- mb->set_position(gui.mouse_focus->get_local_mouse_position());
- mb->set_global_position(gui.mouse_focus->get_local_mouse_position());
- mb->set_button_index(gui.mouse_focus_button);
- mb->set_pressed(false);
- Control *c = gui.mouse_focus;
- gui.mouse_focus = NULL;
- c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+ _drop_mouse_focus();
}
} break;
}
@@ -1686,10 +1678,10 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
if (mb->is_pressed()) {
Size2 pos = mpos;
- if (gui.mouse_focus && mb->get_button_index() != gui.mouse_focus_button) {
-
- //do not steal mouse focus and stuff
+ if (gui.mouse_focus_mask) {
+ //do not steal mouse focus and stuff while a focus mask exists
+ gui.mouse_focus_mask |= 1 << (mb->get_button_index() - 1); //add the button to the mask
} else {
bool is_handled = false;
@@ -1734,7 +1726,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
*/
gui.mouse_focus = _gui_find_control(pos);
- gui.mouse_focus_button = mb->get_button_index();
+ gui.mouse_focus_mask = 1 << (mb->get_button_index() - 1);
if (!gui.mouse_focus) {
return;
@@ -1755,7 +1747,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
mb->set_position(pos);
#ifdef DEBUG_ENABLED
- if (ScriptDebugger::get_singleton()) {
+ if (ScriptDebugger::get_singleton() && gui.mouse_focus) {
Array arr;
arr.push_back(gui.mouse_focus->get_path());
@@ -1788,7 +1780,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
}
- if (gui.mouse_focus->can_process()) {
+ if (gui.mouse_focus && gui.mouse_focus->can_process()) {
_gui_call_input(gui.mouse_focus, mb);
}
@@ -1837,6 +1829,8 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
//change mouse accordingly
}
+ gui.mouse_focus_mask &= ~(1 << (mb->get_button_index() - 1)); //remove from mask
+
if (!gui.mouse_focus) {
//release event is only sent if a mouse focus (previously pressed button) exists
return;
@@ -1852,12 +1846,11 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
Control *mouse_focus = gui.mouse_focus;
//disable mouse focus if needed before calling input, this makes popups on mouse press event work better, as the release will never be received otherwise
- if (mb->get_button_index() == gui.mouse_focus_button) {
+ if (gui.mouse_focus_mask == 0) {
gui.mouse_focus = NULL;
- gui.mouse_focus_button = -1;
}
- if (mouse_focus->can_process()) {
+ if (mouse_focus && mouse_focus->can_process()) {
_gui_call_input(mouse_focus, mb);
}
@@ -1900,6 +1893,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
if (gui.drag_data.get_type() != Variant::NIL) {
gui.mouse_focus = NULL;
+ gui.mouse_focus_mask = 0;
break;
} else {
if (gui.drag_preview != NULL) {
@@ -1961,10 +1955,9 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
// If the mouse is over a menu button, this menu will open automatically
// if there is already a pop-up menu open at the same hierarchical level.
- if (popup_menu_parent && menu_button &&
- popup_menu_parent->get_icon().is_null() &&
- menu_button->get_icon().is_null() &&
- (popup_menu->get_parent()->get_parent()->is_a_parent_of(menu_button) ||
+ if (popup_menu_parent && menu_button && popup_menu_parent->is_switch_on_hover() &&
+ !menu_button->is_disabled() && menu_button->is_switch_on_hover() &&
+ (popup_menu_parent->get_parent()->is_a_parent_of(menu_button) ||
menu_button->get_parent()->is_a_parent_of(popup_menu))) {
popup_menu->notification(Control::NOTIFICATION_MODAL_CLOSE);
@@ -2071,7 +2064,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
OS::get_singleton()->set_cursor_shape((OS::CursorShape)cursor_shape);
- if (over->can_process()) {
+ if (over && over->can_process()) {
_gui_call_input(over, mm);
}
@@ -2412,7 +2405,7 @@ void Viewport::_gui_unfocus_control(Control *p_control) {
void Viewport::_gui_hid_control(Control *p_control) {
if (gui.mouse_focus == p_control) {
- gui.mouse_focus = NULL;
+ _drop_mouse_focus();
}
/* ???
@@ -2439,8 +2432,10 @@ void Viewport::_gui_hid_control(Control *p_control) {
void Viewport::_gui_remove_control(Control *p_control) {
- if (gui.mouse_focus == p_control)
+ if (gui.mouse_focus == p_control) {
gui.mouse_focus = NULL;
+ gui.mouse_focus_mask = 0;
+ }
if (gui.key_focus == p_control)
gui.key_focus = NULL;
if (gui.mouse_over == p_control)
@@ -2489,6 +2484,27 @@ void Viewport::_gui_accept_event() {
set_input_as_handled();
}
+void Viewport::_drop_mouse_focus() {
+
+ Control *c = gui.mouse_focus;
+ int mask = gui.mouse_focus_mask;
+ gui.mouse_focus = NULL;
+ gui.mouse_focus_mask = 0;
+
+ for (int i = 0; i < 3; i++) {
+
+ if (mask & (1 << i)) {
+ Ref<InputEventMouseButton> mb;
+ mb.instance();
+ mb->set_position(c->get_local_mouse_position());
+ mb->set_global_position(c->get_local_mouse_position());
+ mb->set_button_index(i + 1);
+ mb->set_pressed(false);
+ c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+ }
+ }
+}
+
List<Control *>::Element *Viewport::_gui_show_modal(Control *p_control) {
gui.modal_stack.push_back(p_control);
@@ -2498,15 +2514,8 @@ List<Control *>::Element *Viewport::_gui_show_modal(Control *p_control) {
p_control->_modal_set_prev_focus_owner(0);
if (gui.mouse_focus && !p_control->is_a_parent_of(gui.mouse_focus) && !gui.mouse_click_grabber) {
- Ref<InputEventMouseButton> mb;
- mb.instance();
- mb->set_position(gui.mouse_focus->get_local_mouse_position());
- mb->set_global_position(gui.mouse_focus->get_local_mouse_position());
- mb->set_button_index(gui.mouse_focus_button);
- mb->set_pressed(false);
- Control *c = gui.mouse_focus;
- gui.mouse_focus = NULL;
- c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+
+ _drop_mouse_focus();
}
return gui.modal_stack.back();
@@ -2536,24 +2545,45 @@ void Viewport::_post_gui_grab_click_focus() {
if (gui.mouse_focus == focus_grabber)
return;
- Ref<InputEventMouseButton> mb;
- mb.instance();
-
- //send unclic
+ int mask = gui.mouse_focus_mask;
Point2 click = gui.mouse_focus->get_global_transform_with_canvas().affine_inverse().xform(gui.last_mouse_pos);
- mb->set_position(click);
- mb->set_button_index(gui.mouse_focus_button);
- mb->set_pressed(false);
- gui.mouse_focus->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+
+ for (int i = 0; i < 3; i++) {
+
+ if (mask & (1 << i)) {
+
+ Ref<InputEventMouseButton> mb;
+ mb.instance();
+
+ //send unclic
+
+ mb->set_position(click);
+ mb->set_button_index(i + 1);
+ mb->set_pressed(false);
+ gui.mouse_focus->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+ }
+ }
gui.mouse_focus = focus_grabber;
gui.focus_inv_xform = gui.mouse_focus->get_global_transform_with_canvas().affine_inverse();
click = gui.mouse_focus->get_global_transform_with_canvas().affine_inverse().xform(gui.last_mouse_pos);
- mb->set_position(click);
- mb->set_button_index(gui.mouse_focus_button);
- mb->set_pressed(true);
- gui.mouse_focus->call_deferred(SceneStringNames::get_singleton()->_gui_input, mb);
+
+ for (int i = 0; i < 3; i++) {
+
+ if (mask & (1 << i)) {
+
+ Ref<InputEventMouseButton> mb;
+ mb.instance();
+
+ //send clic
+
+ mb->set_position(click);
+ mb->set_button_index(i + 1);
+ mb->set_pressed(true);
+ gui.mouse_focus->call_deferred(SceneStringNames::get_singleton()->_gui_input, mb);
+ }
+ }
}
}
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 44fb322ae2..278350b1c9 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -272,7 +272,7 @@ private:
bool key_event_accepted;
Control *mouse_focus;
Control *mouse_click_grabber;
- int mouse_focus_button;
+ int mouse_focus_mask;
Control *key_focus;
Control *mouse_over;
Control *tooltip;
@@ -379,6 +379,8 @@ private:
void _canvas_layer_add(CanvasLayer *p_canvas_layer);
void _canvas_layer_remove(CanvasLayer *p_canvas_layer);
+ void _drop_mouse_focus();
+
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 97230d422b..d7750c91ef 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -210,8 +210,6 @@
#include "scene/resources/physics_material.h"
#endif
-static ResourceFormatLoaderTheme *resource_loader_theme = NULL;
-
static ResourceFormatSaverText *resource_saver_text = NULL;
static ResourceFormatLoaderText *resource_loader_text = NULL;
@@ -242,9 +240,6 @@ void register_scene_types() {
resource_loader_texture_layered = memnew(ResourceFormatLoaderTextureLayered);
ResourceLoader::add_resource_format_loader(resource_loader_texture_layered);
- resource_loader_theme = memnew(ResourceFormatLoaderTheme);
- ResourceLoader::add_resource_format_loader(resource_loader_theme);
-
resource_saver_text = memnew(ResourceFormatSaverText);
ResourceSaver::add_resource_format_saver(resource_saver_text, true);
@@ -743,7 +738,6 @@ void unregister_scene_types() {
memdelete(resource_loader_dynamic_font);
memdelete(resource_loader_stream_texture);
memdelete(resource_loader_texture_layered);
- memdelete(resource_loader_theme);
DynamicFont::finish_dynamic_fonts();
diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp
index 9ee85b64b6..35132c1195 100644
--- a/scene/resources/audio_stream_sample.cpp
+++ b/scene/resources/audio_stream_sample.cpp
@@ -249,6 +249,10 @@ void AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, in
int32_t todo = p_frames;
+ if (base->loop_mode == AudioStreamSample::LOOP_BACKWARD) {
+ sign = -1;
+ }
+
float base_rate = AudioServer::get_singleton()->get_mix_rate();
float srate = base->mix_rate;
srate *= p_rate_scale;
@@ -621,7 +625,7 @@ void AudioStreamSample::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data");
ADD_PROPERTY(PropertyInfo(Variant::INT, "format", PROPERTY_HINT_ENUM, "8-Bit,16-Bit,IMA-ADPCM"), "set_format", "get_format");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_mode", PROPERTY_HINT_ENUM, "Disabled,Forward,Ping-Pong"), "set_loop_mode", "get_loop_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_mode", PROPERTY_HINT_ENUM, "Disabled,Forward,Ping-Pong,Backward"), "set_loop_mode", "get_loop_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_begin"), "set_loop_begin", "get_loop_begin");
ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_end"), "set_loop_end", "get_loop_end");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_rate"), "set_mix_rate", "get_mix_rate");
@@ -634,6 +638,7 @@ void AudioStreamSample::_bind_methods() {
BIND_ENUM_CONSTANT(LOOP_DISABLED);
BIND_ENUM_CONSTANT(LOOP_FORWARD);
BIND_ENUM_CONSTANT(LOOP_PING_PONG);
+ BIND_ENUM_CONSTANT(LOOP_BACKWARD);
}
AudioStreamSample::AudioStreamSample() {
diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h
index a27acc92b7..2c39e0a11e 100644
--- a/scene/resources/audio_stream_sample.h
+++ b/scene/resources/audio_stream_sample.h
@@ -94,7 +94,8 @@ public:
enum LoopMode {
LOOP_DISABLED,
LOOP_FORWARD,
- LOOP_PING_PONG
+ LOOP_PING_PONG,
+ LOOP_BACKWARD
};
private:
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index fff136cdc3..b0c1dcde9a 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -307,10 +307,6 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_constant("hseparation", "MenuButton", 3 * scale);
- // ButtonGroup
-
- theme->set_stylebox("panel", "ButtonGroup", memnew(StyleBoxEmpty));
-
// CheckBox
Ref<StyleBox> cbx_empty = memnew(StyleBoxEmpty);
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index c9cdfe866f..90552ebb47 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -504,7 +504,7 @@ float Environment::get_ssao_edge_sharpness() const {
void Environment::set_glow_enabled(bool p_enabled) {
glow_enabled = p_enabled;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
_change_notify();
}
@@ -522,7 +522,7 @@ void Environment::set_glow_level(int p_level, bool p_enabled) {
else
glow_levels &= ~(1 << p_level);
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
bool Environment::is_glow_level_enabled(int p_level) const {
@@ -535,7 +535,7 @@ void Environment::set_glow_intensity(float p_intensity) {
glow_intensity = p_intensity;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
float Environment::get_glow_intensity() const {
@@ -545,7 +545,7 @@ float Environment::get_glow_intensity() const {
void Environment::set_glow_strength(float p_strength) {
glow_strength = p_strength;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
float Environment::get_glow_strength() const {
@@ -556,7 +556,7 @@ void Environment::set_glow_bloom(float p_threshold) {
glow_bloom = p_threshold;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
float Environment::get_glow_bloom() const {
@@ -567,7 +567,7 @@ void Environment::set_glow_blend_mode(GlowBlendMode p_mode) {
glow_blend_mode = p_mode;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
Environment::GlowBlendMode Environment::get_glow_blend_mode() const {
@@ -578,18 +578,29 @@ void Environment::set_glow_hdr_bleed_threshold(float p_threshold) {
glow_hdr_bleed_threshold = p_threshold;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
float Environment::get_glow_hdr_bleed_threshold() const {
return glow_hdr_bleed_threshold;
}
+void Environment::set_glow_hdr_luminance_cap(float p_amount) {
+
+ glow_hdr_luminance_cap = p_amount;
+
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
+}
+float Environment::get_glow_hdr_luminance_cap() const {
+
+ return glow_hdr_luminance_cap;
+}
+
void Environment::set_glow_hdr_bleed_scale(float p_scale) {
glow_hdr_bleed_scale = p_scale;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
float Environment::get_glow_hdr_bleed_scale() const {
@@ -599,7 +610,7 @@ float Environment::get_glow_hdr_bleed_scale() const {
void Environment::set_glow_bicubic_upscale(bool p_enable) {
glow_bicubic_upscale = p_enable;
- VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_bicubic_upscale);
+ VS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, VS::EnvironmentGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_threshold, glow_hdr_luminance_cap, glow_bicubic_upscale);
}
bool Environment::is_glow_bicubic_upscale_enabled() const {
@@ -1127,6 +1138,9 @@ void Environment::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_threshold", "threshold"), &Environment::set_glow_hdr_bleed_threshold);
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_threshold"), &Environment::get_glow_hdr_bleed_threshold);
+ ClassDB::bind_method(D_METHOD("set_glow_hdr_luminance_cap", "amount"), &Environment::set_glow_hdr_luminance_cap);
+ ClassDB::bind_method(D_METHOD("get_glow_hdr_luminance_cap"), &Environment::get_glow_hdr_luminance_cap);
+
ClassDB::bind_method(D_METHOD("set_glow_hdr_bleed_scale", "scale"), &Environment::set_glow_hdr_bleed_scale);
ClassDB::bind_method(D_METHOD("get_glow_hdr_bleed_scale"), &Environment::get_glow_hdr_bleed_scale);
@@ -1148,6 +1162,7 @@ void Environment::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_bloom", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_glow_bloom", "get_glow_bloom");
ADD_PROPERTY(PropertyInfo(Variant::INT, "glow_blend_mode", PROPERTY_HINT_ENUM, "Additive,Screen,Softlight,Replace"), "set_glow_blend_mode", "get_glow_blend_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_threshold", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_threshold", "get_glow_hdr_bleed_threshold");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_luminance_cap", PROPERTY_HINT_RANGE, "0.0,256.0,0.01"), "set_glow_hdr_luminance_cap", "get_glow_hdr_luminance_cap");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
@@ -1261,6 +1276,7 @@ Environment::Environment() {
glow_bloom = 0.0;
glow_blend_mode = GLOW_BLEND_MODE_SOFTLIGHT;
glow_hdr_bleed_threshold = 1.0;
+ glow_hdr_luminance_cap = 12.0;
glow_hdr_bleed_scale = 2.0;
glow_bicubic_upscale = false;
diff --git a/scene/resources/environment.h b/scene/resources/environment.h
index 4f5d44088a..55d96bc5bd 100644
--- a/scene/resources/environment.h
+++ b/scene/resources/environment.h
@@ -141,6 +141,7 @@ private:
GlowBlendMode glow_blend_mode;
float glow_hdr_bleed_threshold;
float glow_hdr_bleed_scale;
+ float glow_hdr_luminance_cap;
bool glow_bicubic_upscale;
bool dof_blur_far_enabled;
@@ -312,6 +313,9 @@ public:
void set_glow_hdr_bleed_threshold(float p_threshold);
float get_glow_hdr_bleed_threshold() const;
+ void set_glow_hdr_luminance_cap(float p_amount);
+ float get_glow_hdr_luminance_cap() const;
+
void set_glow_hdr_bleed_scale(float p_scale);
float get_glow_hdr_bleed_scale() const;
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index 5327ed318f..f6dc60900f 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -258,7 +258,7 @@ ShaderMaterial::~ShaderMaterial() {
/////////////////////////////////
Mutex *SpatialMaterial::material_mutex = NULL;
-SelfList<SpatialMaterial>::List SpatialMaterial::dirty_materials;
+SelfList<SpatialMaterial>::List *SpatialMaterial::dirty_materials = NULL;
Map<SpatialMaterial::MaterialKey, SpatialMaterial::ShaderData> SpatialMaterial::shader_map;
SpatialMaterial::ShaderNames *SpatialMaterial::shader_names = NULL;
@@ -268,6 +268,8 @@ void SpatialMaterial::init_shaders() {
material_mutex = Mutex::create();
#endif
+ dirty_materials = memnew(SelfList<SpatialMaterial>::List);
+
shader_names = memnew(ShaderNames);
shader_names->albedo = "albedo";
@@ -348,12 +350,15 @@ void SpatialMaterial::finish_shaders() {
memdelete(material_mutex);
#endif
+ memdelete(dirty_materials);
+ dirty_materials = NULL;
+
memdelete(shader_names);
}
void SpatialMaterial::_update_shader() {
- dirty_materials.remove(&element);
+ dirty_materials->remove(&element);
MaterialKey mk = _compute_key();
if (mk.key == current_key.key)
@@ -699,7 +704,7 @@ void SpatialMaterial::_update_shader() {
if (features[FEATURE_DEPTH_MAPPING] && !flags[FLAG_UV1_USE_TRIPLANAR]) { //depthmap not supported with triplanar
code += "\t{\n";
- code += "\t\tvec3 view_dir = normalize(normalize(-VERTEX)*mat3(TANGENT*depth_flip.x,BINORMAL*depth_flip.y,NORMAL));\n"; // binormal is negative due to mikktspace
+ code += "\t\tvec3 view_dir = normalize(normalize(-VERTEX)*mat3(TANGENT*depth_flip.x,-BINORMAL*depth_flip.y,NORMAL));\n"; // binormal is negative due to mikktspace, flip 'unflips' it ;-)
if (deep_parallax) {
code += "\t\tfloat num_layers = mix(float(depth_max_layers),float(depth_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir)));\n";
@@ -1002,9 +1007,9 @@ void SpatialMaterial::flush_changes() {
if (material_mutex)
material_mutex->lock();
- while (dirty_materials.first()) {
+ while (dirty_materials->first()) {
- dirty_materials.first()->self()->_update_shader();
+ dirty_materials->first()->self()->_update_shader();
}
if (material_mutex)
@@ -1017,7 +1022,7 @@ void SpatialMaterial::_queue_shader_change() {
material_mutex->lock();
if (!element.in_list()) {
- dirty_materials.add(&element);
+ dirty_materials->add(&element);
}
if (material_mutex)
@@ -1315,7 +1320,7 @@ void SpatialMaterial::set_flag(Flags p_flag, bool p_enabled) {
return;
flags[p_flag] = p_enabled;
- if (p_flag == FLAG_USE_ALPHA_SCISSOR) {
+ if (p_flag == FLAG_USE_ALPHA_SCISSOR || p_flag == FLAG_UNSHADED) {
_change_notify();
}
_queue_shader_change();
@@ -1421,6 +1426,48 @@ void SpatialMaterial::_validate_property(PropertyInfo &property) const {
if ((property.name == "depth_min_layers" || property.name == "depth_max_layers") && !deep_parallax) {
property.usage = 0;
}
+
+ if (flags[FLAG_UNSHADED]) {
+ if (property.name.begins_with("anisotropy")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("ao")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("clearcoat")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("emission")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("metallic")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("normal")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("rim")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("roughness")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("subsurf_scatter")) {
+ property.usage = 0;
+ }
+
+ if (property.name.begins_with("transmission")) {
+ property.usage = 0;
+ }
+ }
}
void SpatialMaterial::set_line_width(float p_line_width) {
diff --git a/scene/resources/material.h b/scene/resources/material.h
index 54fceaddc1..921f3baeaa 100644
--- a/scene/resources/material.h
+++ b/scene/resources/material.h
@@ -360,7 +360,7 @@ private:
};
static Mutex *material_mutex;
- static SelfList<SpatialMaterial>::List dirty_materials;
+ static SelfList<SpatialMaterial>::List *dirty_materials;
static ShaderNames *shader_names;
SelfList<SpatialMaterial> element;
diff --git a/scene/resources/particles_material.cpp b/scene/resources/particles_material.cpp
index dae01e8d96..92c185712a 100644
--- a/scene/resources/particles_material.cpp
+++ b/scene/resources/particles_material.cpp
@@ -31,7 +31,7 @@
#include "particles_material.h"
Mutex *ParticlesMaterial::material_mutex = NULL;
-SelfList<ParticlesMaterial>::List ParticlesMaterial::dirty_materials;
+SelfList<ParticlesMaterial>::List *ParticlesMaterial::dirty_materials = NULL;
Map<ParticlesMaterial::MaterialKey, ParticlesMaterial::ShaderData> ParticlesMaterial::shader_map;
ParticlesMaterial::ShaderNames *ParticlesMaterial::shader_names = NULL;
@@ -41,6 +41,8 @@ void ParticlesMaterial::init_shaders() {
material_mutex = Mutex::create();
#endif
+ dirty_materials = memnew(SelfList<ParticlesMaterial>::List);
+
shader_names = memnew(ShaderNames);
shader_names->spread = "spread";
@@ -106,12 +108,15 @@ void ParticlesMaterial::finish_shaders() {
memdelete(material_mutex);
#endif
+ memdelete(dirty_materials);
+ dirty_materials = NULL;
+
memdelete(shader_names);
}
void ParticlesMaterial::_update_shader() {
- dirty_materials.remove(&element);
+ dirty_materials->remove(&element);
MaterialKey mk = _compute_key();
if (mk.key == current_key.key)
@@ -584,9 +589,9 @@ void ParticlesMaterial::flush_changes() {
if (material_mutex)
material_mutex->lock();
- while (dirty_materials.first()) {
+ while (dirty_materials->first()) {
- dirty_materials.first()->self()->_update_shader();
+ dirty_materials->first()->self()->_update_shader();
}
if (material_mutex)
@@ -599,7 +604,7 @@ void ParticlesMaterial::_queue_shader_change() {
material_mutex->lock();
if (!element.in_list()) {
- dirty_materials.add(&element);
+ dirty_materials->add(&element);
}
if (material_mutex)
diff --git a/scene/resources/particles_material.h b/scene/resources/particles_material.h
index 06ebb3c4dc..20b505532e 100644
--- a/scene/resources/particles_material.h
+++ b/scene/resources/particles_material.h
@@ -126,7 +126,7 @@ private:
}
static Mutex *material_mutex;
- static SelfList<ParticlesMaterial>::List dirty_materials;
+ static SelfList<ParticlesMaterial>::List *dirty_materials;
struct ShaderNames {
StringName spread;
diff --git a/scene/resources/primitive_meshes.cpp b/scene/resources/primitive_meshes.cpp
index dafdddd990..6dedb74fad 100644
--- a/scene/resources/primitive_meshes.cpp
+++ b/scene/resources/primitive_meshes.cpp
@@ -306,7 +306,7 @@ void CapsuleMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * radius * w, y * radius * w, z);
points.push_back(p + Vector3(0.0, 0.0, 0.5 * mid_height));
normals.push_back(p.normalized());
- ADD_TANGENT(-y, x, 0.0, -1.0)
+ ADD_TANGENT(-y, x, 0.0, 1.0)
uvs.push_back(Vector2(u, v * onethird));
point++;
@@ -345,7 +345,7 @@ void CapsuleMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * radius, y * radius, z);
points.push_back(p);
normals.push_back(Vector3(x, y, 0.0));
- ADD_TANGENT(-y, x, 0.0, -1.0)
+ ADD_TANGENT(-y, x, 0.0, 1.0)
uvs.push_back(Vector2(u, onethird + (v * onethird)));
point++;
@@ -385,7 +385,7 @@ void CapsuleMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * radius * w, y * radius * w, z);
points.push_back(p + Vector3(0.0, 0.0, -0.5 * mid_height));
normals.push_back(p.normalized());
- ADD_TANGENT(-y, x, 0.0, -1.0)
+ ADD_TANGENT(-y, x, 0.0, 1.0)
uvs.push_back(Vector2(u, twothirds + ((v - 1.0) * onethird)));
point++;
@@ -514,14 +514,14 @@ void CubeMesh::_create_mesh_array(Array &p_arr) const {
// front
points.push_back(Vector3(x, -y, -start_pos.z)); // double negative on the Z!
normals.push_back(Vector3(0.0, 0.0, 1.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(u, v));
point++;
// back
points.push_back(Vector3(-x, -y, start_pos.z));
normals.push_back(Vector3(0.0, 0.0, -1.0));
- ADD_TANGENT(-1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(-1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(twothirds + u, v));
point++;
@@ -568,14 +568,14 @@ void CubeMesh::_create_mesh_array(Array &p_arr) const {
// right
points.push_back(Vector3(-start_pos.x, -y, -z));
normals.push_back(Vector3(1.0, 0.0, 0.0));
- ADD_TANGENT(0.0, 0.0, -1.0, -1.0);
+ ADD_TANGENT(0.0, 0.0, -1.0, 1.0);
uvs.push_back(Vector2(onethird + u, v));
point++;
// left
points.push_back(Vector3(start_pos.x, -y, z));
normals.push_back(Vector3(-1.0, 0.0, 0.0));
- ADD_TANGENT(0.0, 0.0, 1.0, -1.0);
+ ADD_TANGENT(0.0, 0.0, 1.0, 1.0);
uvs.push_back(Vector2(u, 0.5 + v));
point++;
@@ -622,14 +622,14 @@ void CubeMesh::_create_mesh_array(Array &p_arr) const {
// top
points.push_back(Vector3(-x, -start_pos.y, -z));
normals.push_back(Vector3(0.0, 1.0, 0.0));
- ADD_TANGENT(-1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(-1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(onethird + u, 0.5 + v));
point++;
// bottom
points.push_back(Vector3(x, start_pos.y, -z));
normals.push_back(Vector3(0.0, -1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(twothirds + u, 0.5 + v));
point++;
@@ -773,7 +773,7 @@ void CylinderMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * radius, y, z * radius);
points.push_back(p);
normals.push_back(Vector3(x, 0.0, z));
- ADD_TANGENT(z, 0.0, -x, -1.0)
+ ADD_TANGENT(z, 0.0, -x, 1.0)
uvs.push_back(Vector2(u, v * 0.5));
point++;
@@ -799,7 +799,7 @@ void CylinderMesh::_create_mesh_array(Array &p_arr) const {
thisrow = point;
points.push_back(Vector3(0.0, y, 0.0));
normals.push_back(Vector3(0.0, 1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0)
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0)
uvs.push_back(Vector2(0.25, 0.75));
point++;
@@ -816,7 +816,7 @@ void CylinderMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * top_radius, y, z * top_radius);
points.push_back(p);
normals.push_back(Vector3(0.0, 1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0)
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0)
uvs.push_back(Vector2(u, v));
point++;
@@ -835,7 +835,7 @@ void CylinderMesh::_create_mesh_array(Array &p_arr) const {
thisrow = point;
points.push_back(Vector3(0.0, y, 0.0));
normals.push_back(Vector3(0.0, -1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0)
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0)
uvs.push_back(Vector2(0.75, 0.75));
point++;
@@ -852,7 +852,7 @@ void CylinderMesh::_create_mesh_array(Array &p_arr) const {
Vector3 p = Vector3(x * bottom_radius, y, z * bottom_radius);
points.push_back(p);
normals.push_back(Vector3(0.0, -1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0)
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0)
uvs.push_back(Vector2(u, v));
point++;
@@ -982,7 +982,7 @@ void PlaneMesh::_create_mesh_array(Array &p_arr) const {
points.push_back(Vector3(-x, 0.0, -z));
normals.push_back(Vector3(0.0, 1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(1.0 - u, 1.0 - v)); /* 1.0 - uv to match orientation with Quad */
point++;
@@ -1108,14 +1108,14 @@ void PrismMesh::_create_mesh_array(Array &p_arr) const {
/* front */
points.push_back(Vector3(start_x + x, -y, -start_pos.z)); // double negative on the Z!
normals.push_back(Vector3(0.0, 0.0, 1.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(offset_front + u, v));
point++;
/* back */
points.push_back(Vector3(start_x + scaled_size_x - x, -y, start_pos.z));
normals.push_back(Vector3(0.0, 0.0, -1.0));
- ADD_TANGENT(-1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(-1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(twothirds + offset_back + u, v));
point++;
@@ -1187,14 +1187,14 @@ void PrismMesh::_create_mesh_array(Array &p_arr) const {
/* right */
points.push_back(Vector3(right, -y, -z));
normals.push_back(normal_right);
- ADD_TANGENT(0.0, 0.0, -1.0, -1.0);
+ ADD_TANGENT(0.0, 0.0, -1.0, 1.0);
uvs.push_back(Vector2(onethird + u, v));
point++;
/* left */
points.push_back(Vector3(left, -y, z));
normals.push_back(normal_left);
- ADD_TANGENT(0.0, 0.0, 1.0, -1.0);
+ ADD_TANGENT(0.0, 0.0, 1.0, 1.0);
uvs.push_back(Vector2(u, 0.5 + v));
point++;
@@ -1241,7 +1241,7 @@ void PrismMesh::_create_mesh_array(Array &p_arr) const {
/* bottom */
points.push_back(Vector3(x, start_pos.y, -z));
normals.push_back(Vector3(0.0, -1.0, 0.0));
- ADD_TANGENT(1.0, 0.0, 0.0, -1.0);
+ ADD_TANGENT(1.0, 0.0, 0.0, 1.0);
uvs.push_back(Vector2(twothirds + u, 0.5 + v));
point++;
@@ -1382,7 +1382,7 @@ void QuadMesh::_create_mesh_array(Array &p_arr) const {
tangents.set(i * 4 + 0, 1.0);
tangents.set(i * 4 + 1, 0.0);
tangents.set(i * 4 + 2, 0.0);
- tangents.set(i * 4 + 3, -1.0);
+ tangents.set(i * 4 + 3, 1.0);
static const Vector2 quad_uv[4] = {
Vector2(0, 1),
@@ -1468,7 +1468,7 @@ void SphereMesh::_create_mesh_array(Array &p_arr) const {
points.push_back(p);
normals.push_back(p.normalized());
};
- ADD_TANGENT(z, 0.0, -x, -1.0)
+ ADD_TANGENT(z, 0.0, -x, 1.0)
uvs.push_back(Vector2(u, v));
point++;
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index 5d4c7861e3..842252d5d9 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -764,10 +764,22 @@ void SurfaceTool::append_from(const Ref<Mesh> &p_existing, int p_surface, const
}
//mikktspace callbacks
+namespace {
+struct TangentGenerationContextUserData {
+ Vector<List<SurfaceTool::Vertex>::Element *> vertices;
+ Vector<List<int>::Element *> indices;
+};
+} // namespace
+
int SurfaceTool::mikktGetNumFaces(const SMikkTSpaceContext *pContext) {
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- return varr.size() / 3;
+ TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData);
+
+ if (triangle_data.indices.size() > 0) {
+ return triangle_data.indices.size() / 3;
+ } else {
+ return triangle_data.vertices.size() / 3;
+ }
}
int SurfaceTool::mikktGetNumVerticesOfFace(const SMikkTSpaceContext *pContext, const int iFace) {
@@ -775,8 +787,17 @@ int SurfaceTool::mikktGetNumVerticesOfFace(const SMikkTSpaceContext *pContext, c
}
void SurfaceTool::mikktGetPosition(const SMikkTSpaceContext *pContext, float fvPosOut[], const int iFace, const int iVert) {
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- Vector3 v = varr[iFace * 3 + iVert]->get().vertex;
+ TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData);
+ Vector3 v;
+ if (triangle_data.indices.size() > 0) {
+ int index = triangle_data.indices[iFace * 3 + iVert]->get();
+ if (index < triangle_data.vertices.size()) {
+ v = triangle_data.vertices[index]->get().vertex;
+ }
+ } else {
+ v = triangle_data.vertices[iFace * 3 + iVert]->get().vertex;
+ }
+
fvPosOut[0] = v.x;
fvPosOut[1] = v.y;
fvPosOut[2] = v.z;
@@ -784,38 +805,56 @@ void SurfaceTool::mikktGetPosition(const SMikkTSpaceContext *pContext, float fvP
void SurfaceTool::mikktGetNormal(const SMikkTSpaceContext *pContext, float fvNormOut[], const int iFace, const int iVert) {
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- Vector3 v = varr[iFace * 3 + iVert]->get().normal;
+ TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData);
+ Vector3 v;
+ if (triangle_data.indices.size() > 0) {
+ int index = triangle_data.indices[iFace * 3 + iVert]->get();
+ if (index < triangle_data.vertices.size()) {
+ v = triangle_data.vertices[index]->get().normal;
+ }
+ } else {
+ v = triangle_data.vertices[iFace * 3 + iVert]->get().normal;
+ }
+
fvNormOut[0] = v.x;
fvNormOut[1] = v.y;
fvNormOut[2] = v.z;
}
void SurfaceTool::mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexcOut[], const int iFace, const int iVert) {
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- Vector2 v = varr[iFace * 3 + iVert]->get().uv;
+ TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData);
+ Vector2 v;
+ if (triangle_data.indices.size() > 0) {
+ int index = triangle_data.indices[iFace * 3 + iVert]->get();
+ if (index < triangle_data.vertices.size()) {
+ v = triangle_data.vertices[index]->get().uv;
+ }
+ } else {
+ v = triangle_data.vertices[iFace * 3 + iVert]->get().uv;
+ }
+
fvTexcOut[0] = v.x;
fvTexcOut[1] = v.y;
- //fvTexcOut[1]=1.0-v.y;
}
void SurfaceTool::mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT,
const tbool bIsOrientationPreserving, const int iFace, const int iVert) {
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- Vertex *vtx = &varr[iFace * 3 + iVert]->get();
-
- vtx->tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]);
- vtx->binormal = Vector3(fvBiTangent[0], fvBiTangent[1], fvBiTangent[2]);
-}
-
-void SurfaceTool::mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert) {
-
- Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData);
- Vertex &vtx = varr[iFace * 3 + iVert]->get();
+ TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData);
+ Vertex *vtx = NULL;
+ if (triangle_data.indices.size() > 0) {
+ int index = triangle_data.indices[iFace * 3 + iVert]->get();
+ if (index < triangle_data.vertices.size()) {
+ vtx = &triangle_data.vertices[index]->get();
+ }
+ } else {
+ vtx = &triangle_data.vertices[iFace * 3 + iVert]->get();
+ }
- vtx.tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]);
- vtx.binormal = vtx.normal.cross(vtx.tangent) * fSign;
+ if (vtx != NULL) {
+ vtx->tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]);
+ vtx->binormal = Vector3(-fvBiTangent[0], -fvBiTangent[1], -fvBiTangent[2]); // for some reason these are reversed, something with the coordinate system in Godot
+ }
}
void SurfaceTool::generate_tangents() {
@@ -823,10 +862,6 @@ void SurfaceTool::generate_tangents() {
ERR_FAIL_COND(!(format & Mesh::ARRAY_FORMAT_TEX_UV));
ERR_FAIL_COND(!(format & Mesh::ARRAY_FORMAT_NORMAL));
- bool indexed = index_array.size() > 0;
- if (indexed)
- deindex();
-
SMikkTSpaceInterface mkif;
mkif.m_getNormal = mikktGetNormal;
mkif.m_getNumFaces = mikktGetNumFaces;
@@ -839,24 +874,25 @@ void SurfaceTool::generate_tangents() {
SMikkTSpaceContext msc;
msc.m_pInterface = &mkif;
- Vector<List<Vertex>::Element *> vtx;
- vtx.resize(vertex_array.size());
+ TangentGenerationContextUserData triangle_data;
+ triangle_data.vertices.resize(vertex_array.size());
int idx = 0;
for (List<Vertex>::Element *E = vertex_array.front(); E; E = E->next()) {
- vtx.write[idx++] = E;
+ triangle_data.vertices.write[idx++] = E;
E->get().binormal = Vector3();
E->get().tangent = Vector3();
}
- msc.m_pUserData = &vtx;
+ triangle_data.indices.resize(index_array.size());
+ idx = 0;
+ for (List<int>::Element *E = index_array.front(); E; E = E->next()) {
+ triangle_data.indices.write[idx++] = E;
+ }
+ msc.m_pUserData = &triangle_data;
bool res = genTangSpaceDefault(&msc);
ERR_FAIL_COND(!res);
format |= Mesh::ARRAY_FORMAT_TANGENT;
-
- if (indexed) {
- index();
- }
}
void SurfaceTool::generate_normals(bool p_flip) {
diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h
index 459d399380..cc8599e90a 100644
--- a/scene/resources/surface_tool.h
+++ b/scene/resources/surface_tool.h
@@ -90,7 +90,6 @@ private:
static void mikktGetPosition(const SMikkTSpaceContext *pContext, float fvPosOut[], const int iFace, const int iVert);
static void mikktGetNormal(const SMikkTSpaceContext *pContext, float fvNormOut[], const int iFace, const int iVert);
static void mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexcOut[], const int iFace, const int iVert);
- static void mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert);
static void mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT,
const tbool bIsOrientationPreserving, const int iFace, const int iVert);
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 682bfebdd2..4f4d375481 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -994,11 +994,11 @@ void AtlasTexture::_bind_methods() {
void AtlasTexture::draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate, bool p_transpose, const Ref<Texture> &p_normal_map) const {
- Rect2 rc = region;
-
if (!atlas.is_valid())
return;
+ Rect2 rc = region;
+
if (rc.size.width == 0) {
rc.size.width = atlas->get_width();
}
@@ -1013,11 +1013,11 @@ void AtlasTexture::draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_m
void AtlasTexture::draw_rect(RID p_canvas_item, const Rect2 &p_rect, bool p_tile, const Color &p_modulate, bool p_transpose, const Ref<Texture> &p_normal_map) const {
- Rect2 rc = region;
-
if (!atlas.is_valid())
return;
+ Rect2 rc = region;
+
if (rc.size.width == 0) {
rc.size.width = atlas->get_width();
}
@@ -1048,11 +1048,11 @@ void AtlasTexture::draw_rect_region(RID p_canvas_item, const Rect2 &p_rect, cons
bool AtlasTexture::get_rect_region(const Rect2 &p_rect, const Rect2 &p_src_rect, Rect2 &r_rect, Rect2 &r_src_rect) const {
- Rect2 rc = region;
-
if (!atlas.is_valid())
return false;
+ Rect2 rc = region;
+
Rect2 src = p_src_rect;
if (src.size == Size2()) {
src.size = rc.size;
@@ -1084,11 +1084,13 @@ bool AtlasTexture::get_rect_region(const Rect2 &p_rect, const Rect2 &p_src_rect,
bool AtlasTexture::is_pixel_opaque(int p_x, int p_y) const {
- if (atlas.is_valid()) {
- return atlas->is_pixel_opaque(p_x + region.position.x + margin.position.x, p_x + region.position.y + margin.position.y);
- }
+ if (!atlas.is_valid())
+ return true;
- return true;
+ int x = p_x + region.position.x + margin.position.x;
+ int y = p_y + region.position.y + margin.position.y;
+
+ return atlas->is_pixel_opaque(x, y);
}
AtlasTexture::AtlasTexture() {
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 8c01a642ae..3eb652ecd9 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -761,411 +761,3 @@ Theme::Theme() {
Theme::~Theme() {
}
-
-RES ResourceFormatLoaderTheme::load(const String &p_path, const String &p_original_path, Error *r_error) {
- if (r_error)
- *r_error = ERR_CANT_OPEN;
-
- Error err;
- FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
-
- ERR_EXPLAIN("Unable to open theme file: " + p_path);
- ERR_FAIL_COND_V(err, RES());
- String base_path = p_path.get_base_dir();
- Ref<Theme> theme(memnew(Theme));
- Map<StringName, Variant> library;
- if (r_error)
- *r_error = ERR_FILE_CORRUPT;
-
- bool reading_library = false;
- int line = 0;
-
- while (!f->eof_reached()) {
-
- String l = f->get_line().strip_edges();
- line++;
-
- int comment = l.find(";");
- if (comment != -1)
- l = l.substr(0, comment);
- if (l == "")
- continue;
-
- if (l.begins_with("[")) {
- if (l == "[library]") {
- reading_library = true;
- } else if (l == "[theme]") {
- reading_library = false;
- } else {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Unknown section type: '" + l + "'.");
- ERR_FAIL_V(RES());
- }
- continue;
- }
-
- int eqpos = l.find("=");
- if (eqpos == -1) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected '='.");
- ERR_FAIL_V(RES());
- }
-
- String right = l.substr(eqpos + 1, l.length()).strip_edges();
- if (right == "") {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected value after '='.");
- ERR_FAIL_V(RES());
- }
-
- Variant value;
-
- if (right.is_valid_integer()) {
- //is number
- value = right.to_int();
- } else if (right.is_valid_html_color()) {
- //is html color
- value = Color::html(right);
- } else if (right.begins_with("@")) { //reference
-
- String reference = right.substr(1, right.length());
- if (!library.has(reference)) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid reference to '" + reference + "'.");
- ERR_FAIL_V(RES());
- }
-
- value = library[reference];
-
- } else if (right.begins_with("default")) { //use default
- //do none
- } else {
- //attempt to parse a constructor
- int popenpos = right.find("(");
-
- if (popenpos == -1) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor syntax: " + right);
- ERR_FAIL_V(RES());
- }
-
- int pclosepos = right.find_last(")");
-
- if (pclosepos == -1) {
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor parameter syntax: " + right);
- ERR_FAIL_V(RES());
- }
-
- String type = right.substr(0, popenpos);
- String param = right.substr(popenpos + 1, pclosepos - popenpos - 1);
-
- if (type == "icon") {
-
- String path;
-
- if (param.is_abs_path())
- path = param;
- else
- path = base_path + "/" + param;
-
- Ref<Texture> texture = ResourceLoader::load(path);
- if (!texture.is_valid()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't find icon at path: " + path);
- ERR_FAIL_V(RES());
- }
-
- value = texture;
-
- } else if (type == "sbox") {
-
- String path;
-
- if (param.is_abs_path())
- path = param;
- else
- path = base_path + "/" + param;
-
- Ref<StyleBox> stylebox = ResourceLoader::load(path);
- if (!stylebox.is_valid()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't find stylebox at path: " + path);
- ERR_FAIL_V(RES());
- }
-
- value = stylebox;
-
- } else if (type == "sboxt") {
-
- Vector<String> params = param.split(",");
- if (params.size() != 5 && params.size() != 9) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid param count for sboxt(): '" + right + "'.");
- ERR_FAIL_V(RES());
- }
-
- String path = params[0];
-
- if (!param.is_abs_path())
- path = base_path + "/" + path;
-
- Ref<Texture> tex = ResourceLoader::load(path);
- if (tex.is_null()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Could not open texture for sboxt at path: '" + params[0] + "'.");
- ERR_FAIL_V(RES());
- }
-
- Ref<StyleBoxTexture> sbtex(memnew(StyleBoxTexture));
-
- sbtex->set_texture(tex);
-
- for (int i = 0; i < 4; i++) {
- if (!params[i + 1].is_valid_integer()) {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxt #" + itos(i + 1) + ", expected integer constant, got: '" + params[i + 1] + "'.");
- ERR_FAIL_V(RES());
- }
-
- int margin = params[i + 1].to_int();
- sbtex->set_expand_margin_size(Margin(i), margin);
- }
-
- if (params.size() == 9) {
-
- for (int i = 0; i < 4; i++) {
-
- if (!params[i + 5].is_valid_integer()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxt #" + itos(i + 5) + ", expected integer constant, got: '" + params[i + 5] + "'.");
- ERR_FAIL_V(RES());
- }
-
- int margin = params[i + 5].to_int();
- sbtex->set_margin_size(Margin(i), margin);
- }
- }
-
- value = sbtex;
- } else if (type == "sboxf") {
-
- Vector<String> params = param.split(",");
- if (params.size() < 2) {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid param count for sboxf(): '" + right + "'.");
- ERR_FAIL_V(RES());
- }
-
- Ref<StyleBoxFlat> sbflat(memnew(StyleBoxFlat));
-
- if (!params[0].is_valid_integer()) {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected integer numeric constant for parameter 0 (border size).");
- ERR_FAIL_V(RES());
- }
-
- sbflat->set_border_width_all(params[0].to_int());
-
- if (!params[0].is_valid_integer()) {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected integer numeric constant for parameter 0 (border size).");
- ERR_FAIL_V(RES());
- }
-
- int left = MIN(params.size() - 1, 3);
-
- int ccodes = 0;
-
- for (int i = 0; i < left; i++) {
-
- if (params[i + 1].is_valid_html_color())
- ccodes++;
- else
- break;
- }
-
- Color normal;
- Color bright;
- Color dark;
-
- if (ccodes < 1) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected at least 1, 2 or 3 html color codes.");
- ERR_FAIL_V(RES());
- } else if (ccodes == 1) {
-
- normal = Color::html(params[1]);
- bright = Color::html(params[1]);
- dark = Color::html(params[1]);
- } else if (ccodes == 2) {
-
- normal = Color::html(params[1]);
- bright = Color::html(params[2]);
- dark = Color::html(params[2]);
- } else {
-
- normal = Color::html(params[1]);
- bright = Color::html(params[2]);
- dark = Color::html(params[3]);
- }
-
- sbflat->set_border_color_all(bright);
- // sbflat->set_dark_color(dark);
- sbflat->set_bg_color(normal);
-
- if (params.size() == ccodes + 5) {
- //margins
- for (int i = 0; i < 4; i++) {
-
- if (!params[i + ccodes + 1].is_valid_integer()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxf #" + itos(i + ccodes + 1) + ", expected integer constant, got: '" + params[i + ccodes + 1] + "'.");
- ERR_FAIL_V(RES());
- }
-
- //int margin = params[i+ccodes+1].to_int();
- //sbflat->set_margin_size(Margin(i),margin);
- }
- } else if (params.size() != ccodes + 1) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid amount of margin parameters for sboxt.");
- ERR_FAIL_V(RES());
- }
-
- value = sbflat;
-
- } else {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor type: '" + type + "'.");
- ERR_FAIL_V(RES());
- }
- }
-
- //parse left and do something with it
- String left = l.substr(0, eqpos);
-
- if (reading_library) {
-
- left = left.strip_edges();
- if (!left.is_valid_identifier()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": <LibraryItem> is not a valid identifier.");
- ERR_FAIL_V(RES());
- }
- if (library.has(left)) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Already in library: '" + left + "'.");
- ERR_FAIL_V(RES());
- }
-
- library[left] = value;
- } else {
-
- int pointpos = left.find(".");
- if (pointpos == -1) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected 'control.item=..' assign syntax.");
- ERR_FAIL_V(RES());
- }
-
- String control = left.substr(0, pointpos).strip_edges();
- if (!control.is_valid_identifier()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": <Control> is not a valid identifier.");
- ERR_FAIL_V(RES());
- }
- String item = left.substr(pointpos + 1, left.size()).strip_edges();
- if (!item.is_valid_identifier()) {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": <Item> is not a valid identifier.");
- ERR_FAIL_V(RES());
- }
-
- if (value.get_type() == Variant::NIL) {
- //try to use exiting
- if (Theme::get_default()->has_stylebox(item, control))
- value = Theme::get_default()->get_stylebox(item, control);
- else if (Theme::get_default()->has_font(item, control))
- value = Theme::get_default()->get_font(item, control);
- else if (Theme::get_default()->has_icon(item, control))
- value = Theme::get_default()->get_icon(item, control);
- else if (Theme::get_default()->has_color(item, control))
- value = Theme::get_default()->get_color(item, control);
- else if (Theme::get_default()->has_constant(item, control))
- value = Theme::get_default()->get_constant(item, control);
- else {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Default not present for: '" + control + "." + item + "'.");
- ERR_FAIL_V(RES());
- }
- }
-
- if (value.get_type() == Variant::OBJECT) {
-
- Ref<Resource> res = value;
- if (!res.is_valid()) {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid resource (NULL).");
- ERR_FAIL_V(RES());
- }
-
- if (Object::cast_to<StyleBox>(*res)) {
- theme->set_stylebox(item, control, res);
- } else if (Object::cast_to<Font>(*res)) {
- theme->set_font(item, control, res);
- } else if (Object::cast_to<Font>(*res)) {
- theme->set_font(item, control, res);
- } else if (Object::cast_to<Texture>(*res)) {
- theme->set_icon(item, control, res);
- } else {
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid resource type.");
- ERR_FAIL_V(RES());
- }
- } else if (value.get_type() == Variant::COLOR) {
-
- theme->set_color(item, control, value);
-
- } else if (value.get_type() == Variant::INT) {
-
- theme->set_constant(item, control, value);
-
- } else {
-
- memdelete(f);
- ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't even determine what this setting is! what did you do!?");
- ERR_FAIL_V(RES());
- }
- }
- }
-
- f->close();
- memdelete(f);
-
- if (r_error)
- *r_error = OK;
-
- return theme;
-}
-
-void ResourceFormatLoaderTheme::get_recognized_extensions(List<String> *p_extensions) const {
-
- p_extensions->push_back("theme");
-}
-
-bool ResourceFormatLoaderTheme::handles_type(const String &p_type) const {
-
- return p_type == "Theme";
-}
-
-String ResourceFormatLoaderTheme::get_resource_type(const String &p_path) const {
-
- if (p_path.get_extension().to_lower() == "theme")
- return "Theme";
- return "";
-}
diff --git a/scene/resources/theme.h b/scene/resources/theme.h
index c9da5f6ead..ba47c5fb3c 100644
--- a/scene/resources/theme.h
+++ b/scene/resources/theme.h
@@ -190,12 +190,4 @@ public:
~Theme();
};
-class ResourceFormatLoaderTheme : public ResourceFormatLoader {
-public:
- virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
-};
-
#endif
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index f852ecd7eb..c2c2c0ff32 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -129,6 +129,22 @@ bool TileSet::_set(const StringName &p_name, const Variant &p_value) {
}
p.pop_front();
}
+ } else if (what == "z_index_map") {
+ tile_map[id].autotile_data.z_index_map.clear();
+ Array p = p_value;
+ Vector3 val;
+ Vector2 v;
+ int z_index;
+ while (p.size() > 0) {
+ val = p[0];
+ if (val.z != 0) {
+ v.x = val.x;
+ v.y = val.y;
+ z_index = (int)val.z;
+ tile_map[id].autotile_data.z_index_map[v] = z_index;
+ }
+ p.pop_front();
+ }
}
} else if (what == "shape")
tile_set_shape(id, 0, p_value);
@@ -228,6 +244,19 @@ bool TileSet::_get(const StringName &p_name, Variant &r_ret) const {
}
}
r_ret = p;
+ } else if (what == "z_index_map") {
+ Array p;
+ Vector3 v;
+ for (Map<Vector2, int>::Element *E = tile_map[id].autotile_data.z_index_map.front(); E; E = E->next()) {
+ if (E->value() != 0) {
+ //Don't save default value
+ v.x = E->key().x;
+ v.y = E->key().y;
+ v.z = E->value();
+ p.push_back(v);
+ }
+ }
+ r_ret = p;
}
} else if (what == "shape")
r_ret = tile_get_shape(id, 0);
@@ -278,6 +307,7 @@ void TileSet::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/occluder_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/navpoly_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/priority_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/z_index_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
} else if (tile_get_tile_mode(id) == ATLAS_TILE) {
p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/icon_coordinate", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/tile_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
@@ -476,6 +506,23 @@ int TileSet::autotile_get_subtile_priority(int p_id, const Vector2 &p_coord) {
return 1;
}
+void TileSet::autotile_set_z_index(int p_id, const Vector2 &p_coord, int p_z_index) {
+
+ ERR_FAIL_COND(!tile_map.has(p_id));
+ tile_map[p_id].autotile_data.z_index_map[p_coord] = p_z_index;
+ emit_changed();
+}
+
+int TileSet::autotile_get_z_index(int p_id, const Vector2 &p_coord) {
+
+ ERR_FAIL_COND_V(!tile_map.has(p_id), 1);
+ if (tile_map[p_id].autotile_data.z_index_map.has(p_coord)) {
+ return tile_map[p_id].autotile_data.z_index_map[p_coord];
+ }
+ //When not custom z index set return the default value
+ return 0;
+}
+
const Map<Vector2, int> &TileSet::autotile_get_priority_map(int p_id) const {
static Map<Vector2, int> dummy;
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index 1802bf12b6..2ab771b1b0 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -87,6 +87,7 @@ public:
Map<Vector2, Ref<OccluderPolygon2D> > occluder_map;
Map<Vector2, Ref<NavigationPolygon> > navpoly_map;
Map<Vector2, int> priority_map;
+ Map<Vector2, int> z_index_map;
// Default size to prevent invalid value
explicit AutotileData() :
@@ -172,6 +173,9 @@ public:
int autotile_get_subtile_priority(int p_id, const Vector2 &p_coord);
const Map<Vector2, int> &autotile_get_priority_map(int p_id) const;
+ void autotile_set_z_index(int p_id, const Vector2 &p_coord, int p_z_index);
+ int autotile_get_z_index(int p_id, const Vector2 &p_coord);
+
void autotile_set_bitmask(int p_id, Vector2 p_coord, uint16_t p_flag);
uint16_t autotile_get_bitmask(int p_id, Vector2 p_coord);
const Map<Vector2, uint16_t> &autotile_get_bitmask_map(int p_id);
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index 02a0bed964..21073a1cd1 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -30,6 +30,7 @@
#include "audio_stream.h"
#include "core/os/os.h"
+#include "core/project_settings.h"
//////////////////////////////
@@ -184,6 +185,12 @@ float AudioStreamPlaybackMicrophone::get_stream_sampling_rate() {
}
void AudioStreamPlaybackMicrophone::start(float p_from_pos) {
+
+ if (!GLOBAL_GET("audio/enable_audio_input")) {
+ WARN_PRINTS("Need to enable Project settings > Audio > Enable Audio Input option to use capturing.");
+ return;
+ }
+
input_ofs = 0;
AudioDriver::get_singleton()->capture_start();
diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp
index a0094f66b8..5a583243ca 100644
--- a/servers/audio/effects/audio_effect_record.cpp
+++ b/servers/audio/effects/audio_effect_record.cpp
@@ -44,20 +44,25 @@ void AudioEffectRecordInstance::process(const AudioFrame *p_src_frames, AudioFra
}
}
+void AudioEffectRecordInstance::_update_buffer() {
+ //Case: Frames are remaining in the buffer
+ while (ring_buffer_read_pos < ring_buffer_pos) {
+ //Read from the buffer into recording_data
+ _io_store_buffer();
+ }
+}
+
+void AudioEffectRecordInstance::_update(void *userdata) {
+ AudioEffectRecordInstance *ins = (AudioEffectRecordInstance *)userdata;
+ ins->_update_buffer();
+}
+
bool AudioEffectRecordInstance::process_silence() const {
return true;
}
void AudioEffectRecordInstance::_io_thread_process() {
-
- //Reset recorder status
thread_active = true;
- ring_buffer_pos = 0;
- ring_buffer_read_pos = 0;
-
- //We start a new recording
- recording_data.resize(0); //Clear data completely and reset length
- is_recording = true;
while (is_recording) {
//Check: The current recording has been requested to stop
@@ -65,13 +70,9 @@ void AudioEffectRecordInstance::_io_thread_process() {
is_recording = false;
}
- //Case: Frames are remaining in the buffer
- if (ring_buffer_read_pos < ring_buffer_pos) {
- //Read from the buffer into recording_data
- _io_store_buffer();
- }
- //Case: The buffer is empty
- else if (is_recording) {
+ _update_buffer();
+
+ if (is_recording) {
//Wait to avoid too much busy-wait
OS::get_singleton()->delay_usec(500);
}
@@ -103,7 +104,35 @@ void AudioEffectRecordInstance::_thread_callback(void *_instance) {
}
void AudioEffectRecordInstance::init() {
+ //Reset recorder status
+ ring_buffer_pos = 0;
+ ring_buffer_read_pos = 0;
+
+ //We start a new recording
+ recording_data.resize(0); //Clear data completely and reset length
+ is_recording = true;
+
+#ifdef NO_THREADS
+ AudioServer::get_singleton()->add_update_callback(&AudioEffectRecordInstance::_update, this);
+#else
io_thread = Thread::create(_thread_callback, this);
+#endif
+}
+
+void AudioEffectRecordInstance::finish() {
+
+#ifdef NO_THREADS
+ AudioServer::get_singleton()->remove_update_callback(&AudioEffectRecordInstance::_update, this);
+#else
+ if (thread_active) {
+ Thread::wait_to_finish(io_thread);
+ }
+#endif
+}
+
+AudioEffectRecordInstance::~AudioEffectRecordInstance() {
+
+ finish();
}
Ref<AudioEffectInstance> AudioEffectRecord::instance() {
@@ -145,8 +174,8 @@ Ref<AudioEffectInstance> AudioEffectRecord::instance() {
void AudioEffectRecord::ensure_thread_stopped() {
recording_active = false;
- if (current_instance != 0 && current_instance->thread_active) {
- Thread::wait_to_finish(current_instance->io_thread);
+ if (current_instance != 0) {
+ current_instance->finish();
}
}
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 4b8ee2bcdd..c5e4866f17 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -62,14 +62,18 @@ class AudioEffectRecordInstance : public AudioEffectInstance {
void _io_store_buffer();
static void _thread_callback(void *_instance);
void _init_recording();
+ void _update_buffer();
+ static void _update(void *userdata);
public:
void init();
+ void finish();
virtual void process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count);
virtual bool process_silence() const;
AudioEffectRecordInstance() :
thread_active(false) {}
+ ~AudioEffectRecordInstance();
};
class AudioEffectRecord : public AudioEffect {
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 6fd996c3d3..0073f9e149 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -172,6 +172,7 @@ int AudioDriverManager::get_driver_count() {
}
void AudioDriverManager::initialize(int p_driver) {
+ GLOBAL_DEF_RST("audio/enable_audio_input", false);
int failed_driver = -1;
// Check if there is a selected driver
@@ -737,6 +738,12 @@ float AudioServer::get_bus_volume_db(int p_bus) const {
return buses[p_bus]->volume_db;
}
+int AudioServer::get_bus_channels(int p_bus) const {
+
+ ERR_FAIL_INDEX_V(p_bus, buses.size(), 0);
+ return buses[p_bus]->channels.size();
+}
+
void AudioServer::set_bus_send(int p_bus, const StringName &p_send) {
ERR_FAIL_INDEX(p_bus, buses.size());
@@ -1021,6 +1028,11 @@ void AudioServer::update() {
AudioDriver::get_singleton()->reset_profiling_time();
prof_time = 0;
#endif
+
+ for (Set<CallbackItem>::Element *E = update_callbacks.front(); E; E = E->next()) {
+
+ E->get().callback(E->get().userdata);
+ }
}
void AudioServer::load_default_bus_layout() {
@@ -1146,6 +1158,25 @@ void AudioServer::remove_callback(AudioCallback p_callback, void *p_userdata) {
unlock();
}
+void AudioServer::add_update_callback(AudioCallback p_callback, void *p_userdata) {
+ lock();
+ CallbackItem ci;
+ ci.callback = p_callback;
+ ci.userdata = p_userdata;
+ update_callbacks.insert(ci);
+ unlock();
+}
+
+void AudioServer::remove_update_callback(AudioCallback p_callback, void *p_userdata) {
+
+ lock();
+ CallbackItem ci;
+ ci.callback = p_callback;
+ ci.userdata = p_userdata;
+ update_callbacks.erase(ci);
+ unlock();
+}
+
void AudioServer::set_bus_layout(const Ref<AudioBusLayout> &p_bus_layout) {
ERR_FAIL_COND(p_bus_layout.is_null() || p_bus_layout->buses.size() == 0);
@@ -1267,6 +1298,8 @@ void AudioServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_bus_name", "bus_idx"), &AudioServer::get_bus_name);
ClassDB::bind_method(D_METHOD("get_bus_index", "bus_name"), &AudioServer::get_bus_index);
+ ClassDB::bind_method(D_METHOD("get_bus_channels", "bus_idx"), &AudioServer::get_bus_channels);
+
ClassDB::bind_method(D_METHOD("set_bus_volume_db", "bus_idx", "volume_db"), &AudioServer::set_bus_volume_db);
ClassDB::bind_method(D_METHOD("get_bus_volume_db", "bus_idx"), &AudioServer::get_bus_volume_db);
diff --git a/servers/audio_server.h b/servers/audio_server.h
index 52fa84e3e6..c389e4010f 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -263,6 +263,7 @@ private:
};
Set<CallbackItem> callbacks;
+ Set<CallbackItem> update_callbacks;
friend class AudioDriver;
void _driver_process(int p_frames, int32_t *p_buffer);
@@ -299,6 +300,8 @@ public:
String get_bus_name(int p_bus) const;
int get_bus_index(const StringName &p_bus_name) const;
+ int get_bus_channels(int p_bus) const;
+
void set_bus_volume_db(int p_bus, float p_volume_db);
float get_bus_volume_db(int p_bus) const;
@@ -359,6 +362,9 @@ public:
void add_callback(AudioCallback p_callback, void *p_userdata);
void remove_callback(AudioCallback p_callback, void *p_userdata);
+ void add_update_callback(AudioCallback p_callback, void *p_userdata);
+ void remove_update_callback(AudioCallback p_callback, void *p_userdata);
+
void set_bus_layout(const Ref<AudioBusLayout> &p_bus_layout);
Ref<AudioBusLayout> generate_bus_layout() const;
diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp
index 36511f78ce..74cb724bb3 100644
--- a/servers/physics/body_sw.cpp
+++ b/servers/physics/body_sw.cpp
@@ -87,6 +87,10 @@ void BodySW::update_inertias() {
for (int i = 0; i < get_shape_count(); i++) {
+ if (is_shape_disabled(i)) {
+ continue;
+ }
+
const ShapeSW *shape = get_shape(i);
real_t area = get_shape_area(i);
diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h
index 993799ee10..dc482baccb 100644
--- a/servers/physics/collision_object_sw.h
+++ b/servers/physics/collision_object_sw.h
@@ -122,6 +122,10 @@ public:
void set_shape(int p_index, ShapeSW *p_shape);
void set_shape_transform(int p_index, const Transform &p_transform);
_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
+ _FORCE_INLINE_ bool is_shape_disabled(int p_index) const {
+ CRASH_BAD_INDEX(p_index, shapes.size());
+ return shapes[p_index].disabled;
+ }
_FORCE_INLINE_ ShapeSW *get_shape(int p_index) const { return shapes[p_index].shape; }
_FORCE_INLINE_ const Transform &get_shape_transform(int p_index) const { return shapes[p_index].xform; }
_FORCE_INLINE_ const Transform &get_shape_inv_transform(int p_index) const { return shapes[p_index].xform_inv; }
diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h
index b3c61403aa..c361d00fcc 100644
--- a/servers/physics/physics_server_sw.h
+++ b/servers/physics/physics_server_sw.h
@@ -348,6 +348,9 @@ public:
virtual void generic_6dof_joint_set_flag(RID p_joint, Vector3::Axis, G6DOFJointAxisFlag p_flag, bool p_enable);
virtual bool generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis, G6DOFJointAxisFlag p_flag);
+ virtual void generic_6dof_joint_set_precision(RID p_joint, int precision) {}
+ virtual int generic_6dof_joint_get_precision(RID p_joint) { return 0; }
+
virtual JointType joint_get_type(RID p_joint) const;
virtual void joint_set_solver_priority(RID p_joint, int p_priority);
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp
index 52362386d2..475c9ba977 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/body_2d_sw.cpp
@@ -61,6 +61,10 @@ void Body2DSW::update_inertias() {
for (int i = 0; i < get_shape_count(); i++) {
+ if (is_shape_disabled(i)) {
+ continue;
+ }
+
const Shape2DSW *shape = get_shape(i);
real_t area = get_shape_aabb(i).get_area();
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h
index f256910f52..2bf8cba572 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/collision_object_2d_sw.h
@@ -115,6 +115,10 @@ public:
void set_shape_metadata(int p_index, const Variant &p_metadata);
_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
+ _FORCE_INLINE_ bool is_shape_disabled(int p_index) const {
+ CRASH_BAD_INDEX(p_index, shapes.size());
+ return shapes[p_index].disabled;
+ }
_FORCE_INLINE_ Shape2DSW *get_shape(int p_index) const {
CRASH_BAD_INDEX(p_index, shapes.size());
return shapes[p_index].shape;
diff --git a/servers/physics_server.h b/servers/physics_server.h
index 15b353f768..9fb5e958c3 100644
--- a/servers/physics_server.h
+++ b/servers/physics_server.h
@@ -734,6 +734,9 @@ public:
virtual void generic_6dof_joint_set_flag(RID p_joint, Vector3::Axis, G6DOFJointAxisFlag p_flag, bool p_enable) = 0;
virtual bool generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis, G6DOFJointAxisFlag p_flag) = 0;
+ virtual void generic_6dof_joint_set_precision(RID p_joint, int precision) = 0;
+ virtual int generic_6dof_joint_get_precision(RID p_joint) = 0;
+
/* QUERY API */
enum AreaBodyStatus {
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index 4329203ccb..f78b4aaf5f 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -62,7 +62,7 @@ public:
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality) = 0;
- virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) = 0;
+ virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) = 0;
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp
index baafe2f8d0..b5e03b4826 100644
--- a/servers/visual/shader_types.cpp
+++ b/servers/visual/shader_types.cpp
@@ -86,6 +86,7 @@ ShaderTypes::ShaderTypes() {
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["TANGENT"] = ShaderLanguage::TYPE_VEC3;
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["BINORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["VIEW"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["NORMALMAP_DEPTH"] = ShaderLanguage::TYPE_FLOAT;
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV"] = constt(ShaderLanguage::TYPE_VEC2);
@@ -118,6 +119,7 @@ ShaderTypes::ShaderTypes() {
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["WORLD_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["INV_CAMERA_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["CAMERA_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["PROJECTION_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["INV_PROJECTION_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
@@ -126,6 +128,7 @@ ShaderTypes::ShaderTypes() {
shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["WORLD_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["INV_CAMERA_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
+ shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["CAMERA_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["PROJECTION_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["INV_PROJECTION_MATRIX"] = constt(ShaderLanguage::TYPE_MAT4);
shader_modes[VS::SHADER_SPATIAL].functions["light"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
@@ -229,7 +232,7 @@ ShaderTypes::ShaderTypes() {
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT_VEC"] = ShaderLanguage::TYPE_VEC2;
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT_HEIGHT"] = ShaderLanguage::TYPE_FLOAT;
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT_COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT_UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT_UV"] = constt(ShaderLanguage::TYPE_VEC2);
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["LIGHT"] = ShaderLanguage::TYPE_VEC4;
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["SHADOW_COLOR"] = ShaderLanguage::TYPE_VEC4;
shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["POINT_COORD"] = constt(ShaderLanguage::TYPE_VEC2);
diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp
index 734c295a72..26fb3cc493 100644
--- a/servers/visual/visual_server_canvas.cpp
+++ b/servers/visual/visual_server_canvas.cpp
@@ -339,7 +339,7 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) {
Item *ysort_owner = item_owner;
while (ysort_owner && ysort_owner->sort_y) {
item_owner->ysort_children_count = -1;
- ysort_owner = canvas_item_owner.getornull(ysort_owner->parent);
+ ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL;
}
}
@@ -363,7 +363,7 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) {
Item *ysort_owner = item_owner;
while (ysort_owner && ysort_owner->sort_y) {
item_owner->ysort_children_count = -1;
- ysort_owner = canvas_item_owner.getornull(ysort_owner->parent);
+ ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL;
}
} else {
@@ -1354,7 +1354,7 @@ bool VisualServerCanvas::free(RID p_rid) {
Item *ysort_owner = item_owner;
while (ysort_owner && ysort_owner->sort_y) {
item_owner->ysort_children_count = -1;
- ysort_owner = canvas_item_owner.getornull(ysort_owner->parent);
+ ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL;
}
}
}
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index d37fe28ac6..f3a442be99 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -504,7 +504,7 @@ public:
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
- BIND10(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, bool)
+ BIND11(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, float, bool)
BIND9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index 1aeb2756ba..37f6323b8f 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -430,7 +430,7 @@ public:
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
- FUNC10(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, bool)
+ FUNC11(environment_set_glow, RID, bool, int, float, float, float, EnvironmentGlowBlendMode, float, float, float, bool)
FUNC9(environment_set_tonemap, RID, EnvironmentToneMapper, float, float, bool, float, float, float, float)
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index e1db123f58..34cc1cbd66 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -1909,7 +1909,7 @@ void VisualServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("environment_set_ambient_light", "env", "color", "energy", "sky_contibution"), &VisualServer::environment_set_ambient_light, DEFVAL(1.0), DEFVAL(0.0));
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_near", "env", "enable", "distance", "transition", "far_amount", "quality"), &VisualServer::environment_set_dof_blur_near);
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_far", "env", "enable", "distance", "transition", "far_amount", "quality"), &VisualServer::environment_set_dof_blur_far);
- ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "bicubic_upscale"), &VisualServer::environment_set_glow);
+ ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "hdr_luminance_cap", "bicubic_upscale"), &VisualServer::environment_set_glow);
ClassDB::bind_method(D_METHOD("environment_set_tonemap", "env", "tone_mapper", "exposure", "white", "auto_exposure", "min_luminance", "max_luminance", "auto_exp_speed", "auto_exp_grey"), &VisualServer::environment_set_tonemap);
ClassDB::bind_method(D_METHOD("environment_set_adjustment", "env", "enable", "brightness", "contrast", "saturation", "ramp"), &VisualServer::environment_set_adjustment);
ClassDB::bind_method(D_METHOD("environment_set_ssr", "env", "enable", "max_steps", "fade_in", "fade_out", "depth_tolerance", "roughness"), &VisualServer::environment_set_ssr);
diff --git a/servers/visual_server.h b/servers/visual_server.h
index 743e010034..ad2819a95a 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -733,7 +733,7 @@ public:
GLOW_BLEND_MODE_SOFTLIGHT,
GLOW_BLEND_MODE_REPLACE,
};
- virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, bool p_bicubic_upscale) = 0;
+ virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale) = 0;
enum EnvironmentToneMapper {
ENV_TONE_MAPPER_LINEAR,
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 55b693af96..e63e1fc109 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -233,7 +233,7 @@ Godot-made change marked with `// -- GODOT --` comments.
## libwebp
- Upstream: https://chromium.googlesource.com/webm/libwebp/
-- Version: 1.0.0
+- Version: 1.0.1
- License: BSD-3-Clause
Files extracted from upstream source:
@@ -503,7 +503,7 @@ changes are marked with `// -- GODOT --` comments.
## tinyexr
- Upstream: https://github.com/syoyo/tinyexr
-- Version: git (2d5375f, 2018)
+- Version: git (5ae30aa, 2018)
- License: BSD-3-Clause
Files extracted from upstream source:
diff --git a/thirdparty/libwebp/src/dec/alphai_dec.h b/thirdparty/libwebp/src/dec/alphai_dec.h
index e0fa281a55..a64104abeb 100644
--- a/thirdparty/libwebp/src/dec/alphai_dec.h
+++ b/thirdparty/libwebp/src/dec/alphai_dec.h
@@ -51,4 +51,4 @@ void WebPDeallocateAlphaMemory(VP8Decoder* const dec);
} // extern "C"
#endif
-#endif /* WEBP_DEC_ALPHAI_DEC_H_ */
+#endif // WEBP_DEC_ALPHAI_DEC_H_
diff --git a/thirdparty/libwebp/src/dec/buffer_dec.c b/thirdparty/libwebp/src/dec/buffer_dec.c
index 75eb3c40b4..3cd94eb4d9 100644
--- a/thirdparty/libwebp/src/dec/buffer_dec.c
+++ b/thirdparty/libwebp/src/dec/buffer_dec.c
@@ -74,7 +74,8 @@ static VP8StatusCode CheckDecBuffer(const WebPDecBuffer* const buffer) {
} else { // RGB checks
const WebPRGBABuffer* const buf = &buffer->u.RGBA;
const int stride = abs(buf->stride);
- const uint64_t size = MIN_BUFFER_SIZE(width, height, stride);
+ const uint64_t size =
+ MIN_BUFFER_SIZE(width * kModeBpp[mode], height, stride);
ok &= (size <= buf->size);
ok &= (stride >= width * kModeBpp[mode]);
ok &= (buf->rgba != NULL);
diff --git a/thirdparty/libwebp/src/dec/common_dec.h b/thirdparty/libwebp/src/dec/common_dec.h
index 9995f1a51a..b158550a80 100644
--- a/thirdparty/libwebp/src/dec/common_dec.h
+++ b/thirdparty/libwebp/src/dec/common_dec.h
@@ -51,4 +51,4 @@ enum { MB_FEATURE_TREE_PROBS = 3,
NUM_PROBAS = 11
};
-#endif // WEBP_DEC_COMMON_DEC_H_
+#endif // WEBP_DEC_COMMON_DEC_H_
diff --git a/thirdparty/libwebp/src/dec/frame_dec.c b/thirdparty/libwebp/src/dec/frame_dec.c
index a9d5430d00..bda9e1a6f6 100644
--- a/thirdparty/libwebp/src/dec/frame_dec.c
+++ b/thirdparty/libwebp/src/dec/frame_dec.c
@@ -338,7 +338,6 @@ void VP8InitDithering(const WebPDecoderOptions* const options,
for (s = 0; s < NUM_MB_SEGMENTS; ++s) {
VP8QuantMatrix* const dqm = &dec->dqm_[s];
if (dqm->uv_quant_ < DITHER_AMP_TAB_SIZE) {
- // TODO(skal): should we specially dither more for uv_quant_ < 0?
const int idx = (dqm->uv_quant_ < 0) ? 0 : dqm->uv_quant_;
dqm->dither_ = (f * kQuantToDitherAmp[idx]) >> 3;
}
@@ -669,15 +668,9 @@ int VP8GetThreadMethod(const WebPDecoderOptions* const options,
(void)height;
assert(headers == NULL || !headers->is_lossless);
#if defined(WEBP_USE_THREAD)
- if (width < MIN_WIDTH_FOR_THREADS) return 0;
- // TODO(skal): tune the heuristic further
-#if 0
- if (height < 2 * width) return 2;
+ if (width >= MIN_WIDTH_FOR_THREADS) return 2;
#endif
- return 2;
-#else // !WEBP_USE_THREAD
return 0;
-#endif
}
#undef MT_CACHE_LINES
diff --git a/thirdparty/libwebp/src/dec/idec_dec.c b/thirdparty/libwebp/src/dec/idec_dec.c
index a371ed7500..9bc9166808 100644
--- a/thirdparty/libwebp/src/dec/idec_dec.c
+++ b/thirdparty/libwebp/src/dec/idec_dec.c
@@ -140,10 +140,9 @@ static void DoRemap(WebPIDecoder* const idec, ptrdiff_t offset) {
if (NeedCompressedAlpha(idec)) {
ALPHDecoder* const alph_dec = dec->alph_dec_;
dec->alpha_data_ += offset;
- if (alph_dec != NULL) {
+ if (alph_dec != NULL && alph_dec->vp8l_dec_ != NULL) {
if (alph_dec->method_ == ALPHA_LOSSLESS_COMPRESSION) {
VP8LDecoder* const alph_vp8l_dec = alph_dec->vp8l_dec_;
- assert(alph_vp8l_dec != NULL);
assert(dec->alpha_data_size_ >= ALPHA_HEADER_LEN);
VP8LBitReaderSetBuffer(&alph_vp8l_dec->br_,
dec->alpha_data_ + ALPHA_HEADER_LEN,
@@ -283,10 +282,8 @@ static void RestoreContext(const MBContext* context, VP8Decoder* const dec,
static VP8StatusCode IDecError(WebPIDecoder* const idec, VP8StatusCode error) {
if (idec->state_ == STATE_VP8_DATA) {
- VP8Io* const io = &idec->io_;
- if (io->teardown != NULL) {
- io->teardown(io);
- }
+ // Synchronize the thread, clean-up and check for errors.
+ VP8ExitCritical((VP8Decoder*)idec->dec_, &idec->io_);
}
idec->state_ = STATE_ERROR;
return error;
@@ -451,7 +448,10 @@ static VP8StatusCode DecodeRemaining(WebPIDecoder* const idec) {
VP8Decoder* const dec = (VP8Decoder*)idec->dec_;
VP8Io* const io = &idec->io_;
- assert(dec->ready_);
+ // Make sure partition #0 has been read before, to set dec to ready_.
+ if (!dec->ready_) {
+ return IDecError(idec, VP8_STATUS_BITSTREAM_ERROR);
+ }
for (; dec->mb_y_ < dec->mb_h_; ++dec->mb_y_) {
if (idec->last_mb_y_ != dec->mb_y_) {
if (!VP8ParseIntraModeRow(&dec->br_, dec)) {
@@ -473,6 +473,12 @@ static VP8StatusCode DecodeRemaining(WebPIDecoder* const idec) {
MemDataSize(&idec->mem_) > MAX_MB_SIZE) {
return IDecError(idec, VP8_STATUS_BITSTREAM_ERROR);
}
+ // Synchronize the threads.
+ if (dec->mt_method_ > 0) {
+ if (!WebPGetWorkerInterface()->Sync(&dec->worker_)) {
+ return IDecError(idec, VP8_STATUS_BITSTREAM_ERROR);
+ }
+ }
RestoreContext(&context, dec, token_br);
return VP8_STATUS_SUSPENDED;
}
@@ -491,6 +497,7 @@ static VP8StatusCode DecodeRemaining(WebPIDecoder* const idec) {
}
// Synchronize the thread and check for errors.
if (!VP8ExitCritical(dec, io)) {
+ idec->state_ = STATE_ERROR; // prevent re-entry in IDecError
return IDecError(idec, VP8_STATUS_USER_ABORT);
}
dec->ready_ = 0;
@@ -571,6 +578,10 @@ static VP8StatusCode IDecode(WebPIDecoder* idec) {
status = DecodePartition0(idec);
}
if (idec->state_ == STATE_VP8_DATA) {
+ const VP8Decoder* const dec = (VP8Decoder*)idec->dec_;
+ if (dec == NULL) {
+ return VP8_STATUS_SUSPENDED; // can't continue if we have no decoder.
+ }
status = DecodeRemaining(idec);
}
if (idec->state_ == STATE_VP8L_HEADER) {
diff --git a/thirdparty/libwebp/src/dec/vp8_dec.h b/thirdparty/libwebp/src/dec/vp8_dec.h
index ca85b340cf..a05405df72 100644
--- a/thirdparty/libwebp/src/dec/vp8_dec.h
+++ b/thirdparty/libwebp/src/dec/vp8_dec.h
@@ -182,4 +182,4 @@ WEBP_EXTERN int VP8LGetInfo(
} // extern "C"
#endif
-#endif /* WEBP_DEC_VP8_DEC_H_ */
+#endif // WEBP_DEC_VP8_DEC_H_
diff --git a/thirdparty/libwebp/src/dec/vp8i_dec.h b/thirdparty/libwebp/src/dec/vp8i_dec.h
index c929933e1c..e5e89df57d 100644
--- a/thirdparty/libwebp/src/dec/vp8i_dec.h
+++ b/thirdparty/libwebp/src/dec/vp8i_dec.h
@@ -32,7 +32,7 @@ extern "C" {
// version numbers
#define DEC_MAJ_VERSION 1
#define DEC_MIN_VERSION 0
-#define DEC_REV_VERSION 0
+#define DEC_REV_VERSION 1
// YUV-cache parameters. Cache is 32-bytes wide (= one cacheline).
// Constraints are: We need to store one 16x16 block of luma samples (y),
@@ -316,4 +316,4 @@ const uint8_t* VP8DecompressAlphaRows(VP8Decoder* const dec,
} // extern "C"
#endif
-#endif /* WEBP_DEC_VP8I_DEC_H_ */
+#endif // WEBP_DEC_VP8I_DEC_H_
diff --git a/thirdparty/libwebp/src/dec/vp8l_dec.c b/thirdparty/libwebp/src/dec/vp8l_dec.c
index 0570f53a77..333bb3e80d 100644
--- a/thirdparty/libwebp/src/dec/vp8l_dec.c
+++ b/thirdparty/libwebp/src/dec/vp8l_dec.c
@@ -362,12 +362,19 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
VP8LMetadata* const hdr = &dec->hdr_;
uint32_t* huffman_image = NULL;
HTreeGroup* htree_groups = NULL;
+ // When reading htrees, some might be unused, as the format allows it.
+ // We will still read them but put them in this htree_group_bogus.
+ HTreeGroup htree_group_bogus;
HuffmanCode* huffman_tables = NULL;
+ HuffmanCode* huffman_tables_bogus = NULL;
HuffmanCode* next = NULL;
int num_htree_groups = 1;
+ int num_htree_groups_max = 1;
int max_alphabet_size = 0;
int* code_lengths = NULL;
const int table_size = kTableSize[color_cache_bits];
+ int* mapping = NULL;
+ int ok = 0;
if (allow_recursion && VP8LReadBits(br, 1)) {
// use meta Huffman codes.
@@ -384,9 +391,41 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
// The huffman data is stored in red and green bytes.
const int group = (huffman_image[i] >> 8) & 0xffff;
huffman_image[i] = group;
- if (group >= num_htree_groups) {
- num_htree_groups = group + 1;
+ if (group >= num_htree_groups_max) {
+ num_htree_groups_max = group + 1;
+ }
+ }
+ // Check the validity of num_htree_groups_max. If it seems too big, use a
+ // smaller value for later. This will prevent big memory allocations to end
+ // up with a bad bitstream anyway.
+ // The value of 1000 is totally arbitrary. We know that num_htree_groups_max
+ // is smaller than (1 << 16) and should be smaller than the number of pixels
+ // (though the format allows it to be bigger).
+ if (num_htree_groups_max > 1000 || num_htree_groups_max > xsize * ysize) {
+ // Create a mapping from the used indices to the minimal set of used
+ // values [0, num_htree_groups)
+ mapping = (int*)WebPSafeMalloc(num_htree_groups_max, sizeof(*mapping));
+ if (mapping == NULL) {
+ dec->status_ = VP8_STATUS_OUT_OF_MEMORY;
+ goto Error;
+ }
+ // -1 means a value is unmapped, and therefore unused in the Huffman
+ // image.
+ memset(mapping, 0xff, num_htree_groups_max * sizeof(*mapping));
+ for (num_htree_groups = 0, i = 0; i < huffman_pixs; ++i) {
+ // Get the current mapping for the group and remap the Huffman image.
+ int* const mapped_group = &mapping[huffman_image[i]];
+ if (*mapped_group == -1) *mapped_group = num_htree_groups++;
+ huffman_image[i] = *mapped_group;
+ }
+ huffman_tables_bogus = (HuffmanCode*)WebPSafeMalloc(
+ table_size, sizeof(*huffman_tables_bogus));
+ if (huffman_tables_bogus == NULL) {
+ dec->status_ = VP8_STATUS_OUT_OF_MEMORY;
+ goto Error;
}
+ } else {
+ num_htree_groups = num_htree_groups_max;
}
}
@@ -403,11 +442,11 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
}
}
+ code_lengths = (int*)WebPSafeCalloc((uint64_t)max_alphabet_size,
+ sizeof(*code_lengths));
huffman_tables = (HuffmanCode*)WebPSafeMalloc(num_htree_groups * table_size,
sizeof(*huffman_tables));
htree_groups = VP8LHtreeGroupsNew(num_htree_groups);
- code_lengths = (int*)WebPSafeCalloc((uint64_t)max_alphabet_size,
- sizeof(*code_lengths));
if (htree_groups == NULL || code_lengths == NULL || huffman_tables == NULL) {
dec->status_ = VP8_STATUS_OUT_OF_MEMORY;
@@ -415,28 +454,35 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
}
next = huffman_tables;
- for (i = 0; i < num_htree_groups; ++i) {
- HTreeGroup* const htree_group = &htree_groups[i];
+ for (i = 0; i < num_htree_groups_max; ++i) {
+ // If the index "i" is unused in the Huffman image, read the coefficients
+ // but store them to a bogus htree_group.
+ const int is_bogus = (mapping != NULL && mapping[i] == -1);
+ HTreeGroup* const htree_group =
+ is_bogus ? &htree_group_bogus :
+ &htree_groups[(mapping == NULL) ? i : mapping[i]];
HuffmanCode** const htrees = htree_group->htrees;
+ HuffmanCode* huffman_tables_i = is_bogus ? huffman_tables_bogus : next;
int size;
int total_size = 0;
int is_trivial_literal = 1;
int max_bits = 0;
for (j = 0; j < HUFFMAN_CODES_PER_META_CODE; ++j) {
int alphabet_size = kAlphabetSize[j];
- htrees[j] = next;
+ htrees[j] = huffman_tables_i;
if (j == 0 && color_cache_bits > 0) {
alphabet_size += 1 << color_cache_bits;
}
- size = ReadHuffmanCode(alphabet_size, dec, code_lengths, next);
+ size =
+ ReadHuffmanCode(alphabet_size, dec, code_lengths, huffman_tables_i);
if (size == 0) {
goto Error;
}
if (is_trivial_literal && kLiteralMap[j] == 1) {
- is_trivial_literal = (next->bits == 0);
+ is_trivial_literal = (huffman_tables_i->bits == 0);
}
- total_size += next->bits;
- next += size;
+ total_size += huffman_tables_i->bits;
+ huffman_tables_i += size;
if (j <= ALPHA) {
int local_max_bits = code_lengths[0];
int k;
@@ -448,38 +494,41 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
max_bits += local_max_bits;
}
}
+ if (!is_bogus) next = huffman_tables_i;
htree_group->is_trivial_literal = is_trivial_literal;
htree_group->is_trivial_code = 0;
if (is_trivial_literal) {
const int red = htrees[RED][0].value;
const int blue = htrees[BLUE][0].value;
const int alpha = htrees[ALPHA][0].value;
- htree_group->literal_arb =
- ((uint32_t)alpha << 24) | (red << 16) | blue;
+ htree_group->literal_arb = ((uint32_t)alpha << 24) | (red << 16) | blue;
if (total_size == 0 && htrees[GREEN][0].value < NUM_LITERAL_CODES) {
htree_group->is_trivial_code = 1;
htree_group->literal_arb |= htrees[GREEN][0].value << 8;
}
}
- htree_group->use_packed_table = !htree_group->is_trivial_code &&
- (max_bits < HUFFMAN_PACKED_BITS);
+ htree_group->use_packed_table =
+ !htree_group->is_trivial_code && (max_bits < HUFFMAN_PACKED_BITS);
if (htree_group->use_packed_table) BuildPackedTable(htree_group);
}
- WebPSafeFree(code_lengths);
+ ok = 1;
- // All OK. Finalize pointers and return.
+ // All OK. Finalize pointers.
hdr->huffman_image_ = huffman_image;
hdr->num_htree_groups_ = num_htree_groups;
hdr->htree_groups_ = htree_groups;
hdr->huffman_tables_ = huffman_tables;
- return 1;
Error:
WebPSafeFree(code_lengths);
- WebPSafeFree(huffman_image);
- WebPSafeFree(huffman_tables);
- VP8LHtreeGroupsFree(htree_groups);
- return 0;
+ WebPSafeFree(huffman_tables_bogus);
+ WebPSafeFree(mapping);
+ if (!ok) {
+ WebPSafeFree(huffman_image);
+ WebPSafeFree(huffman_tables);
+ VP8LHtreeGroupsFree(htree_groups);
+ }
+ return ok;
}
//------------------------------------------------------------------------------
@@ -884,7 +933,11 @@ static WEBP_INLINE void CopyBlock8b(uint8_t* const dst, int dist, int length) {
#endif
break;
case 2:
+#if !defined(WORDS_BIGENDIAN)
memcpy(&pattern, src, sizeof(uint16_t));
+#else
+ pattern = ((uint32_t)src[0] << 8) | src[1];
+#endif
#if defined(__arm__) || defined(_M_ARM)
pattern |= pattern << 16;
#elif defined(WEBP_USE_MIPS_DSP_R2)
@@ -1523,7 +1576,6 @@ int VP8LDecodeAlphaHeader(ALPHDecoder* const alph_dec,
if (dec == NULL) return 0;
assert(alph_dec != NULL);
- alph_dec->vp8l_dec_ = dec;
dec->width_ = alph_dec->width_;
dec->height_ = alph_dec->height_;
@@ -1555,11 +1607,12 @@ int VP8LDecodeAlphaHeader(ALPHDecoder* const alph_dec,
if (!ok) goto Err;
+ // Only set here, once we are sure it is valid (to avoid thread races).
+ alph_dec->vp8l_dec_ = dec;
return 1;
Err:
- VP8LDelete(alph_dec->vp8l_dec_);
- alph_dec->vp8l_dec_ = NULL;
+ VP8LDelete(dec);
return 0;
}
diff --git a/thirdparty/libwebp/src/dec/vp8li_dec.h b/thirdparty/libwebp/src/dec/vp8li_dec.h
index 8e500cf9ff..0a4d613f99 100644
--- a/thirdparty/libwebp/src/dec/vp8li_dec.h
+++ b/thirdparty/libwebp/src/dec/vp8li_dec.h
@@ -132,4 +132,4 @@ void VP8LDelete(VP8LDecoder* const dec);
} // extern "C"
#endif
-#endif /* WEBP_DEC_VP8LI_DEC_H_ */
+#endif // WEBP_DEC_VP8LI_DEC_H_
diff --git a/thirdparty/libwebp/src/dec/webpi_dec.h b/thirdparty/libwebp/src/dec/webpi_dec.h
index c378ba6fc3..24baff5d27 100644
--- a/thirdparty/libwebp/src/dec/webpi_dec.h
+++ b/thirdparty/libwebp/src/dec/webpi_dec.h
@@ -130,4 +130,4 @@ int WebPAvoidSlowMemory(const WebPDecBuffer* const output,
} // extern "C"
#endif
-#endif /* WEBP_DEC_WEBPI_DEC_H_ */
+#endif // WEBP_DEC_WEBPI_DEC_H_
diff --git a/thirdparty/libwebp/src/demux/demux.c b/thirdparty/libwebp/src/demux/demux.c
index 684215e3de..a69c65b7cf 100644
--- a/thirdparty/libwebp/src/demux/demux.c
+++ b/thirdparty/libwebp/src/demux/demux.c
@@ -25,7 +25,7 @@
#define DMUX_MAJ_VERSION 1
#define DMUX_MIN_VERSION 0
-#define DMUX_REV_VERSION 0
+#define DMUX_REV_VERSION 1
typedef struct {
size_t start_; // start location of the data
diff --git a/thirdparty/libwebp/src/dsp/dsp.h b/thirdparty/libwebp/src/dsp/dsp.h
index 4ab77a5130..fafc2d05d3 100644
--- a/thirdparty/libwebp/src/dsp/dsp.h
+++ b/thirdparty/libwebp/src/dsp/dsp.h
@@ -76,10 +76,6 @@ extern "C" {
#define WEBP_USE_SSE41
#endif
-#if defined(__AVX2__) || defined(WEBP_HAVE_AVX2)
-#define WEBP_USE_AVX2
-#endif
-
// The intrinsics currently cause compiler errors with arm-nacl-gcc and the
// inline assembly would need to be modified for use with Native Client.
#if (defined(__ARM_NEON__) || \
@@ -679,4 +675,4 @@ void VP8FiltersInit(void);
} // extern "C"
#endif
-#endif /* WEBP_DSP_DSP_H_ */
+#endif // WEBP_DSP_DSP_H_
diff --git a/thirdparty/libwebp/src/dsp/enc.c b/thirdparty/libwebp/src/dsp/enc.c
index fa23b40a30..2fddbc4c52 100644
--- a/thirdparty/libwebp/src/dsp/enc.c
+++ b/thirdparty/libwebp/src/dsp/enc.c
@@ -734,7 +734,6 @@ VP8BlockCopy VP8Copy16x8;
extern void VP8EncDspInitSSE2(void);
extern void VP8EncDspInitSSE41(void);
-extern void VP8EncDspInitAVX2(void);
extern void VP8EncDspInitNEON(void);
extern void VP8EncDspInitMIPS32(void);
extern void VP8EncDspInitMIPSdspR2(void);
@@ -784,11 +783,6 @@ WEBP_DSP_INIT_FUNC(VP8EncDspInit) {
#endif
}
#endif
-#if defined(WEBP_USE_AVX2)
- if (VP8GetCPUInfo(kAVX2)) {
- VP8EncDspInitAVX2();
- }
-#endif
#if defined(WEBP_USE_MIPS32)
if (VP8GetCPUInfo(kMIPS32)) {
VP8EncDspInitMIPS32();
diff --git a/thirdparty/libwebp/src/dsp/enc_avx2.c b/thirdparty/libwebp/src/dsp/enc_avx2.c
deleted file mode 100644
index 8bc5798fee..0000000000
--- a/thirdparty/libwebp/src/dsp/enc_avx2.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2014 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// AVX2 version of speed-critical encoding functions.
-
-#include "src/dsp/dsp.h"
-
-#if defined(WEBP_USE_AVX2)
-
-#endif // WEBP_USE_AVX2
-
-//------------------------------------------------------------------------------
-// Entry point
-
-WEBP_DSP_INIT_STUB(VP8EncDspInitAVX2)
diff --git a/thirdparty/libwebp/src/dsp/lossless.c b/thirdparty/libwebp/src/dsp/lossless.c
index f9b3c182d3..d21aa6a0a0 100644
--- a/thirdparty/libwebp/src/dsp/lossless.c
+++ b/thirdparty/libwebp/src/dsp/lossless.c
@@ -23,8 +23,6 @@
#include "src/dsp/lossless.h"
#include "src/dsp/lossless_common.h"
-#define MAX_DIFF_COST (1e30f)
-
//------------------------------------------------------------------------------
// Image transforms.
diff --git a/thirdparty/libwebp/src/dsp/lossless.h b/thirdparty/libwebp/src/dsp/lossless.h
index b2bbdfc93c..f709cc86b2 100644
--- a/thirdparty/libwebp/src/dsp/lossless.h
+++ b/thirdparty/libwebp/src/dsp/lossless.h
@@ -163,7 +163,7 @@ extern VP8LCostCombinedFunc VP8LExtraCostCombined;
extern VP8LCombinedShannonEntropyFunc VP8LCombinedShannonEntropy;
typedef struct { // small struct to hold counters
- int counts[2]; // index: 0=zero steak, 1=non-zero streak
+ int counts[2]; // index: 0=zero streak, 1=non-zero streak
int streaks[2][2]; // [zero/non-zero][streak<3 / streak>=3]
} VP8LStreaks;
@@ -194,10 +194,14 @@ extern VP8LGetEntropyUnrefinedFunc VP8LGetEntropyUnrefined;
void VP8LBitsEntropyUnrefined(const uint32_t* const array, int n,
VP8LBitEntropy* const entropy);
-typedef void (*VP8LHistogramAddFunc)(const VP8LHistogram* const a,
- const VP8LHistogram* const b,
- VP8LHistogram* const out);
-extern VP8LHistogramAddFunc VP8LHistogramAdd;
+typedef void (*VP8LAddVectorFunc)(const uint32_t* a, const uint32_t* b,
+ uint32_t* out, int size);
+extern VP8LAddVectorFunc VP8LAddVector;
+typedef void (*VP8LAddVectorEqFunc)(const uint32_t* a, uint32_t* out, int size);
+extern VP8LAddVectorEqFunc VP8LAddVectorEq;
+void VP8LHistogramAdd(const VP8LHistogram* const a,
+ const VP8LHistogram* const b,
+ VP8LHistogram* const out);
// -----------------------------------------------------------------------------
// PrefixEncode()
diff --git a/thirdparty/libwebp/src/dsp/lossless_enc.c b/thirdparty/libwebp/src/dsp/lossless_enc.c
index d608326fef..1408fbf580 100644
--- a/thirdparty/libwebp/src/dsp/lossless_enc.c
+++ b/thirdparty/libwebp/src/dsp/lossless_enc.c
@@ -632,38 +632,67 @@ static double ExtraCostCombined_C(const uint32_t* X, const uint32_t* Y,
//------------------------------------------------------------------------------
-static void HistogramAdd_C(const VP8LHistogram* const a,
- const VP8LHistogram* const b,
- VP8LHistogram* const out) {
+static void AddVector_C(const uint32_t* a, const uint32_t* b, uint32_t* out,
+ int size) {
+ int i;
+ for (i = 0; i < size; ++i) out[i] = a[i] + b[i];
+}
+
+static void AddVectorEq_C(const uint32_t* a, uint32_t* out, int size) {
+ int i;
+ for (i = 0; i < size; ++i) out[i] += a[i];
+}
+
+#define ADD(X, ARG, LEN) do { \
+ if (a->is_used_[X]) { \
+ if (b->is_used_[X]) { \
+ VP8LAddVector(a->ARG, b->ARG, out->ARG, (LEN)); \
+ } else { \
+ memcpy(&out->ARG[0], &a->ARG[0], (LEN) * sizeof(out->ARG[0])); \
+ } \
+ } else if (b->is_used_[X]) { \
+ memcpy(&out->ARG[0], &b->ARG[0], (LEN) * sizeof(out->ARG[0])); \
+ } else { \
+ memset(&out->ARG[0], 0, (LEN) * sizeof(out->ARG[0])); \
+ } \
+} while (0)
+
+#define ADD_EQ(X, ARG, LEN) do { \
+ if (a->is_used_[X]) { \
+ if (out->is_used_[X]) { \
+ VP8LAddVectorEq(a->ARG, out->ARG, (LEN)); \
+ } else { \
+ memcpy(&out->ARG[0], &a->ARG[0], (LEN) * sizeof(out->ARG[0])); \
+ } \
+ } \
+} while (0)
+
+void VP8LHistogramAdd(const VP8LHistogram* const a,
+ const VP8LHistogram* const b, VP8LHistogram* const out) {
int i;
const int literal_size = VP8LHistogramNumCodes(a->palette_code_bits_);
assert(a->palette_code_bits_ == b->palette_code_bits_);
+
if (b != out) {
- for (i = 0; i < literal_size; ++i) {
- out->literal_[i] = a->literal_[i] + b->literal_[i];
- }
- for (i = 0; i < NUM_DISTANCE_CODES; ++i) {
- out->distance_[i] = a->distance_[i] + b->distance_[i];
- }
- for (i = 0; i < NUM_LITERAL_CODES; ++i) {
- out->red_[i] = a->red_[i] + b->red_[i];
- out->blue_[i] = a->blue_[i] + b->blue_[i];
- out->alpha_[i] = a->alpha_[i] + b->alpha_[i];
+ ADD(0, literal_, literal_size);
+ ADD(1, red_, NUM_LITERAL_CODES);
+ ADD(2, blue_, NUM_LITERAL_CODES);
+ ADD(3, alpha_, NUM_LITERAL_CODES);
+ ADD(4, distance_, NUM_DISTANCE_CODES);
+ for (i = 0; i < 5; ++i) {
+ out->is_used_[i] = (a->is_used_[i] | b->is_used_[i]);
}
} else {
- for (i = 0; i < literal_size; ++i) {
- out->literal_[i] += a->literal_[i];
- }
- for (i = 0; i < NUM_DISTANCE_CODES; ++i) {
- out->distance_[i] += a->distance_[i];
- }
- for (i = 0; i < NUM_LITERAL_CODES; ++i) {
- out->red_[i] += a->red_[i];
- out->blue_[i] += a->blue_[i];
- out->alpha_[i] += a->alpha_[i];
- }
+ ADD_EQ(0, literal_, literal_size);
+ ADD_EQ(1, red_, NUM_LITERAL_CODES);
+ ADD_EQ(2, blue_, NUM_LITERAL_CODES);
+ ADD_EQ(3, alpha_, NUM_LITERAL_CODES);
+ ADD_EQ(4, distance_, NUM_DISTANCE_CODES);
+ for (i = 0; i < 5; ++i) out->is_used_[i] |= a->is_used_[i];
}
}
+#undef ADD
+#undef ADD_EQ
//------------------------------------------------------------------------------
// Image transforms.
@@ -848,7 +877,8 @@ VP8LCombinedShannonEntropyFunc VP8LCombinedShannonEntropy;
VP8LGetEntropyUnrefinedFunc VP8LGetEntropyUnrefined;
VP8LGetCombinedEntropyUnrefinedFunc VP8LGetCombinedEntropyUnrefined;
-VP8LHistogramAddFunc VP8LHistogramAdd;
+VP8LAddVectorFunc VP8LAddVector;
+VP8LAddVectorEqFunc VP8LAddVectorEq;
VP8LVectorMismatchFunc VP8LVectorMismatch;
VP8LBundleColorMapFunc VP8LBundleColorMap;
@@ -885,7 +915,8 @@ WEBP_DSP_INIT_FUNC(VP8LEncDspInit) {
VP8LGetEntropyUnrefined = GetEntropyUnrefined_C;
VP8LGetCombinedEntropyUnrefined = GetCombinedEntropyUnrefined_C;
- VP8LHistogramAdd = HistogramAdd_C;
+ VP8LAddVector = AddVector_C;
+ VP8LAddVectorEq = AddVectorEq_C;
VP8LVectorMismatch = VectorMismatch_C;
VP8LBundleColorMap = VP8LBundleColorMap_C;
@@ -971,7 +1002,8 @@ WEBP_DSP_INIT_FUNC(VP8LEncDspInit) {
assert(VP8LCombinedShannonEntropy != NULL);
assert(VP8LGetEntropyUnrefined != NULL);
assert(VP8LGetCombinedEntropyUnrefined != NULL);
- assert(VP8LHistogramAdd != NULL);
+ assert(VP8LAddVector != NULL);
+ assert(VP8LAddVectorEq != NULL);
assert(VP8LVectorMismatch != NULL);
assert(VP8LBundleColorMap != NULL);
assert(VP8LPredictorsSub[0] != NULL);
diff --git a/thirdparty/libwebp/src/dsp/lossless_enc_mips32.c b/thirdparty/libwebp/src/dsp/lossless_enc_mips32.c
index e7b58f4e8c..0412a093cf 100644
--- a/thirdparty/libwebp/src/dsp/lossless_enc_mips32.c
+++ b/thirdparty/libwebp/src/dsp/lossless_enc_mips32.c
@@ -344,65 +344,29 @@ static void GetCombinedEntropyUnrefined_MIPS32(const uint32_t X[],
ASM_END_COMMON_0 \
ASM_END_COMMON_1
-#define ADD_VECTOR(A, B, OUT, SIZE, EXTRA_SIZE) do { \
- const uint32_t* pa = (const uint32_t*)(A); \
- const uint32_t* pb = (const uint32_t*)(B); \
- uint32_t* pout = (uint32_t*)(OUT); \
- const uint32_t* const LoopEnd = pa + (SIZE); \
- assert((SIZE) % 4 == 0); \
- ASM_START \
- ADD_TO_OUT(0, 4, 8, 12, 1, pa, pb, pout) \
- ASM_END_0 \
- if ((EXTRA_SIZE) > 0) { \
- const int last = (EXTRA_SIZE); \
- int i; \
- for (i = 0; i < last; ++i) pout[i] = pa[i] + pb[i]; \
- } \
-} while (0)
-
-#define ADD_VECTOR_EQ(A, OUT, SIZE, EXTRA_SIZE) do { \
- const uint32_t* pa = (const uint32_t*)(A); \
- uint32_t* pout = (uint32_t*)(OUT); \
- const uint32_t* const LoopEnd = pa + (SIZE); \
- assert((SIZE) % 4 == 0); \
- ASM_START \
- ADD_TO_OUT(0, 4, 8, 12, 0, pa, pout, pout) \
- ASM_END_1 \
- if ((EXTRA_SIZE) > 0) { \
- const int last = (EXTRA_SIZE); \
- int i; \
- for (i = 0; i < last; ++i) pout[i] += pa[i]; \
- } \
-} while (0)
-
-static void HistogramAdd_MIPS32(const VP8LHistogram* const a,
- const VP8LHistogram* const b,
- VP8LHistogram* const out) {
+static void AddVector_MIPS32(const uint32_t* pa, const uint32_t* pb,
+ uint32_t* pout, int size) {
uint32_t temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
- const int extra_cache_size = VP8LHistogramNumCodes(a->palette_code_bits_)
- - (NUM_LITERAL_CODES + NUM_LENGTH_CODES);
- assert(a->palette_code_bits_ == b->palette_code_bits_);
-
- if (b != out) {
- ADD_VECTOR(a->literal_, b->literal_, out->literal_,
- NUM_LITERAL_CODES + NUM_LENGTH_CODES, extra_cache_size);
- ADD_VECTOR(a->distance_, b->distance_, out->distance_,
- NUM_DISTANCE_CODES, 0);
- ADD_VECTOR(a->red_, b->red_, out->red_, NUM_LITERAL_CODES, 0);
- ADD_VECTOR(a->blue_, b->blue_, out->blue_, NUM_LITERAL_CODES, 0);
- ADD_VECTOR(a->alpha_, b->alpha_, out->alpha_, NUM_LITERAL_CODES, 0);
- } else {
- ADD_VECTOR_EQ(a->literal_, out->literal_,
- NUM_LITERAL_CODES + NUM_LENGTH_CODES, extra_cache_size);
- ADD_VECTOR_EQ(a->distance_, out->distance_, NUM_DISTANCE_CODES, 0);
- ADD_VECTOR_EQ(a->red_, out->red_, NUM_LITERAL_CODES, 0);
- ADD_VECTOR_EQ(a->blue_, out->blue_, NUM_LITERAL_CODES, 0);
- ADD_VECTOR_EQ(a->alpha_, out->alpha_, NUM_LITERAL_CODES, 0);
- }
+ const uint32_t end = ((size) / 4) * 4;
+ const uint32_t* const LoopEnd = pa + end;
+ int i;
+ ASM_START
+ ADD_TO_OUT(0, 4, 8, 12, 1, pa, pb, pout)
+ ASM_END_0
+ for (i = end; i < size; ++i) pout[i] = pa[i] + pb[i];
+}
+
+static void AddVectorEq_MIPS32(const uint32_t* pa, uint32_t* pout, int size) {
+ uint32_t temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
+ const uint32_t end = ((size) / 4) * 4;
+ const uint32_t* const LoopEnd = pa + end;
+ int i;
+ ASM_START
+ ADD_TO_OUT(0, 4, 8, 12, 0, pa, pout, pout)
+ ASM_END_1
+ for (i = end; i < size; ++i) pout[i] += pa[i];
}
-#undef ADD_VECTOR_EQ
-#undef ADD_VECTOR
#undef ASM_END_1
#undef ASM_END_0
#undef ASM_END_COMMON_1
@@ -422,7 +386,8 @@ WEBP_TSAN_IGNORE_FUNCTION void VP8LEncDspInitMIPS32(void) {
VP8LExtraCostCombined = ExtraCostCombined_MIPS32;
VP8LGetEntropyUnrefined = GetEntropyUnrefined_MIPS32;
VP8LGetCombinedEntropyUnrefined = GetCombinedEntropyUnrefined_MIPS32;
- VP8LHistogramAdd = HistogramAdd_MIPS32;
+ VP8LAddVector = AddVector_MIPS32;
+ VP8LAddVectorEq = AddVectorEq_MIPS32;
}
#else // !WEBP_USE_MIPS32
diff --git a/thirdparty/libwebp/src/dsp/lossless_enc_sse2.c b/thirdparty/libwebp/src/dsp/lossless_enc_sse2.c
index f84a9909e1..36478c4912 100644
--- a/thirdparty/libwebp/src/dsp/lossless_enc_sse2.c
+++ b/thirdparty/libwebp/src/dsp/lossless_enc_sse2.c
@@ -170,12 +170,13 @@ static void CollectColorRedTransforms_SSE2(const uint32_t* argb, int stride,
//------------------------------------------------------------------------------
+// Note we are adding uint32_t's as *signed* int32's (using _mm_add_epi32). But
+// that's ok since the histogram values are less than 1<<28 (max picture size).
#define LINE_SIZE 16 // 8 or 16
static void AddVector_SSE2(const uint32_t* a, const uint32_t* b, uint32_t* out,
int size) {
int i;
- assert(size % LINE_SIZE == 0);
- for (i = 0; i < size; i += LINE_SIZE) {
+ for (i = 0; i + LINE_SIZE <= size; i += LINE_SIZE) {
const __m128i a0 = _mm_loadu_si128((const __m128i*)&a[i + 0]);
const __m128i a1 = _mm_loadu_si128((const __m128i*)&a[i + 4]);
#if (LINE_SIZE == 16)
@@ -195,12 +196,14 @@ static void AddVector_SSE2(const uint32_t* a, const uint32_t* b, uint32_t* out,
_mm_storeu_si128((__m128i*)&out[i + 12], _mm_add_epi32(a3, b3));
#endif
}
+ for (; i < size; ++i) {
+ out[i] = a[i] + b[i];
+ }
}
static void AddVectorEq_SSE2(const uint32_t* a, uint32_t* out, int size) {
int i;
- assert(size % LINE_SIZE == 0);
- for (i = 0; i < size; i += LINE_SIZE) {
+ for (i = 0; i + LINE_SIZE <= size; i += LINE_SIZE) {
const __m128i a0 = _mm_loadu_si128((const __m128i*)&a[i + 0]);
const __m128i a1 = _mm_loadu_si128((const __m128i*)&a[i + 4]);
#if (LINE_SIZE == 16)
@@ -220,35 +223,11 @@ static void AddVectorEq_SSE2(const uint32_t* a, uint32_t* out, int size) {
_mm_storeu_si128((__m128i*)&out[i + 12], _mm_add_epi32(a3, b3));
#endif
}
-}
-#undef LINE_SIZE
-
-// Note we are adding uint32_t's as *signed* int32's (using _mm_add_epi32). But
-// that's ok since the histogram values are less than 1<<28 (max picture size).
-static void HistogramAdd_SSE2(const VP8LHistogram* const a,
- const VP8LHistogram* const b,
- VP8LHistogram* const out) {
- int i;
- const int literal_size = VP8LHistogramNumCodes(a->palette_code_bits_);
- assert(a->palette_code_bits_ == b->palette_code_bits_);
- if (b != out) {
- AddVector_SSE2(a->literal_, b->literal_, out->literal_, NUM_LITERAL_CODES);
- AddVector_SSE2(a->red_, b->red_, out->red_, NUM_LITERAL_CODES);
- AddVector_SSE2(a->blue_, b->blue_, out->blue_, NUM_LITERAL_CODES);
- AddVector_SSE2(a->alpha_, b->alpha_, out->alpha_, NUM_LITERAL_CODES);
- } else {
- AddVectorEq_SSE2(a->literal_, out->literal_, NUM_LITERAL_CODES);
- AddVectorEq_SSE2(a->red_, out->red_, NUM_LITERAL_CODES);
- AddVectorEq_SSE2(a->blue_, out->blue_, NUM_LITERAL_CODES);
- AddVectorEq_SSE2(a->alpha_, out->alpha_, NUM_LITERAL_CODES);
- }
- for (i = NUM_LITERAL_CODES; i < literal_size; ++i) {
- out->literal_[i] = a->literal_[i] + b->literal_[i];
- }
- for (i = 0; i < NUM_DISTANCE_CODES; ++i) {
- out->distance_[i] = a->distance_[i] + b->distance_[i];
+ for (; i < size; ++i) {
+ out[i] += a[i];
}
}
+#undef LINE_SIZE
//------------------------------------------------------------------------------
// Entropy
@@ -675,7 +654,8 @@ WEBP_TSAN_IGNORE_FUNCTION void VP8LEncDspInitSSE2(void) {
VP8LTransformColor = TransformColor_SSE2;
VP8LCollectColorBlueTransforms = CollectColorBlueTransforms_SSE2;
VP8LCollectColorRedTransforms = CollectColorRedTransforms_SSE2;
- VP8LHistogramAdd = HistogramAdd_SSE2;
+ VP8LAddVector = AddVector_SSE2;
+ VP8LAddVectorEq = AddVectorEq_SSE2;
VP8LCombinedShannonEntropy = CombinedShannonEntropy_SSE2;
VP8LVectorMismatch = VectorMismatch_SSE2;
VP8LBundleColorMap = BundleColorMap_SSE2;
diff --git a/thirdparty/libwebp/src/dsp/msa_macro.h b/thirdparty/libwebp/src/dsp/msa_macro.h
index dfacda6ccd..de026a1d9e 100644
--- a/thirdparty/libwebp/src/dsp/msa_macro.h
+++ b/thirdparty/libwebp/src/dsp/msa_macro.h
@@ -1389,4 +1389,4 @@ static WEBP_INLINE uint32_t func_hadd_uh_u32(v8u16 in) {
} while (0)
#define AVER_UB2_UB(...) AVER_UB2(v16u8, __VA_ARGS__)
-#endif /* WEBP_DSP_MSA_MACRO_H_ */
+#endif // WEBP_DSP_MSA_MACRO_H_
diff --git a/thirdparty/libwebp/src/dsp/rescaler.c b/thirdparty/libwebp/src/dsp/rescaler.c
index f307d35056..753f84fcf4 100644
--- a/thirdparty/libwebp/src/dsp/rescaler.c
+++ b/thirdparty/libwebp/src/dsp/rescaler.c
@@ -21,6 +21,7 @@
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
#define MULT_FIX(x, y) (((uint64_t)(x) * (y) + ROUNDER) >> WEBP_RESCALER_RFIX)
+#define MULT_FIX_FLOOR(x, y) (((uint64_t)(x) * (y)) >> WEBP_RESCALER_RFIX)
//------------------------------------------------------------------------------
// Row import
@@ -138,7 +139,7 @@ void WebPRescalerExportRowShrink_C(WebPRescaler* const wrk) {
if (yscale) {
for (x_out = 0; x_out < x_out_max; ++x_out) {
const uint32_t frac = (uint32_t)MULT_FIX(frow[x_out], yscale);
- const int v = (int)MULT_FIX(irow[x_out] - frac, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR(irow[x_out] - frac, wrk->fxy_scale);
assert(v >= 0 && v <= 255);
dst[x_out] = v;
irow[x_out] = frac; // new fractional start
@@ -153,6 +154,7 @@ void WebPRescalerExportRowShrink_C(WebPRescaler* const wrk) {
}
}
+#undef MULT_FIX_FLOOR
#undef MULT_FIX
#undef ROUNDER
diff --git a/thirdparty/libwebp/src/dsp/rescaler_mips32.c b/thirdparty/libwebp/src/dsp/rescaler_mips32.c
index 542f7e5970..61f63c616c 100644
--- a/thirdparty/libwebp/src/dsp/rescaler_mips32.c
+++ b/thirdparty/libwebp/src/dsp/rescaler_mips32.c
@@ -209,6 +209,7 @@ static void ExportRowExpand_MIPS32(WebPRescaler* const wrk) {
}
}
+#if 0 // disabled for now. TODO(skal): make match the C-code
static void ExportRowShrink_MIPS32(WebPRescaler* const wrk) {
const int x_out_max = wrk->dst_width * wrk->num_channels;
uint8_t* dst = wrk->dst;
@@ -273,6 +274,7 @@ static void ExportRowShrink_MIPS32(WebPRescaler* const wrk) {
);
}
}
+#endif // 0
//------------------------------------------------------------------------------
// Entry point
@@ -283,7 +285,7 @@ WEBP_TSAN_IGNORE_FUNCTION void WebPRescalerDspInitMIPS32(void) {
WebPRescalerImportRowExpand = ImportRowExpand_MIPS32;
WebPRescalerImportRowShrink = ImportRowShrink_MIPS32;
WebPRescalerExportRowExpand = ExportRowExpand_MIPS32;
- WebPRescalerExportRowShrink = ExportRowShrink_MIPS32;
+// WebPRescalerExportRowShrink = ExportRowShrink_MIPS32;
}
#else // !WEBP_USE_MIPS32
diff --git a/thirdparty/libwebp/src/dsp/rescaler_mips_dsp_r2.c b/thirdparty/libwebp/src/dsp/rescaler_mips_dsp_r2.c
index b78aac15e6..ce9e64862e 100644
--- a/thirdparty/libwebp/src/dsp/rescaler_mips_dsp_r2.c
+++ b/thirdparty/libwebp/src/dsp/rescaler_mips_dsp_r2.c
@@ -20,10 +20,12 @@
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
#define MULT_FIX(x, y) (((uint64_t)(x) * (y) + ROUNDER) >> WEBP_RESCALER_RFIX)
+#define MULT_FIX_FLOOR(x, y) (((uint64_t)(x) * (y)) >> WEBP_RESCALER_RFIX)
//------------------------------------------------------------------------------
// Row export
+#if 0 // disabled for now. TODO(skal): make match the C-code
static void ExportRowShrink_MIPSdspR2(WebPRescaler* const wrk) {
int i;
const int x_out_max = wrk->dst_width * wrk->num_channels;
@@ -106,7 +108,7 @@ static void ExportRowShrink_MIPSdspR2(WebPRescaler* const wrk) {
}
for (i = 0; i < (x_out_max & 0x3); ++i) {
const uint32_t frac = (uint32_t)MULT_FIX(*frow++, yscale);
- const int v = (int)MULT_FIX(*irow - frac, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR(*irow - frac, wrk->fxy_scale);
assert(v >= 0 && v <= 255);
*dst++ = v;
*irow++ = frac; // new fractional start
@@ -154,13 +156,14 @@ static void ExportRowShrink_MIPSdspR2(WebPRescaler* const wrk) {
);
}
for (i = 0; i < (x_out_max & 0x3); ++i) {
- const int v = (int)MULT_FIX(*irow, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR(*irow, wrk->fxy_scale);
assert(v >= 0 && v <= 255);
*dst++ = v;
*irow++ = 0;
}
}
}
+#endif // 0
static void ExportRowExpand_MIPSdspR2(WebPRescaler* const wrk) {
int i;
@@ -294,6 +297,7 @@ static void ExportRowExpand_MIPSdspR2(WebPRescaler* const wrk) {
}
}
+#undef MULT_FIX_FLOOR
#undef MULT_FIX
#undef ROUNDER
@@ -304,7 +308,7 @@ extern void WebPRescalerDspInitMIPSdspR2(void);
WEBP_TSAN_IGNORE_FUNCTION void WebPRescalerDspInitMIPSdspR2(void) {
WebPRescalerExportRowExpand = ExportRowExpand_MIPSdspR2;
- WebPRescalerExportRowShrink = ExportRowShrink_MIPSdspR2;
+// WebPRescalerExportRowShrink = ExportRowShrink_MIPSdspR2;
}
#else // !WEBP_USE_MIPS_DSP_R2
diff --git a/thirdparty/libwebp/src/dsp/rescaler_msa.c b/thirdparty/libwebp/src/dsp/rescaler_msa.c
index f3bc99f1cd..c559254836 100644
--- a/thirdparty/libwebp/src/dsp/rescaler_msa.c
+++ b/thirdparty/libwebp/src/dsp/rescaler_msa.c
@@ -22,6 +22,7 @@
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
#define MULT_FIX(x, y) (((uint64_t)(x) * (y) + ROUNDER) >> WEBP_RESCALER_RFIX)
+#define MULT_FIX_FLOOR(x, y) (((uint64_t)(x) * (y)) >> WEBP_RESCALER_RFIX)
#define CALC_MULT_FIX_16(in0, in1, in2, in3, scale, shift, dst) do { \
v4u32 tmp0, tmp1, tmp2, tmp3; \
@@ -262,6 +263,7 @@ static void RescalerExportRowExpand_MIPSdspR2(WebPRescaler* const wrk) {
}
}
+#if 0 // disabled for now. TODO(skal): make match the C-code
static WEBP_INLINE void ExportRowShrink_0(const uint32_t* frow, uint32_t* irow,
uint8_t* dst, int length,
const uint32_t yscale,
@@ -341,7 +343,7 @@ static WEBP_INLINE void ExportRowShrink_0(const uint32_t* frow, uint32_t* irow,
}
for (x_out = 0; x_out < length; ++x_out) {
const uint32_t frac = (uint32_t)MULT_FIX(frow[x_out], yscale);
- const int v = (int)MULT_FIX(irow[x_out] - frac, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR(irow[x_out] - frac, wrk->fxy_scale);
assert(v >= 0 && v <= 255);
dst[x_out] = v;
irow[x_out] = frac;
@@ -426,6 +428,7 @@ static void RescalerExportRowShrink_MIPSdspR2(WebPRescaler* const wrk) {
ExportRowShrink_1(irow, dst, x_out_max, wrk);
}
}
+#endif // 0
//------------------------------------------------------------------------------
// Entry point
@@ -434,7 +437,7 @@ extern void WebPRescalerDspInitMSA(void);
WEBP_TSAN_IGNORE_FUNCTION void WebPRescalerDspInitMSA(void) {
WebPRescalerExportRowExpand = RescalerExportRowExpand_MIPSdspR2;
- WebPRescalerExportRowShrink = RescalerExportRowShrink_MIPSdspR2;
+// WebPRescalerExportRowShrink = RescalerExportRowShrink_MIPSdspR2;
}
#else // !WEBP_USE_MSA
diff --git a/thirdparty/libwebp/src/dsp/rescaler_neon.c b/thirdparty/libwebp/src/dsp/rescaler_neon.c
index 3eff9fbaf4..a553f06f79 100644
--- a/thirdparty/libwebp/src/dsp/rescaler_neon.c
+++ b/thirdparty/libwebp/src/dsp/rescaler_neon.c
@@ -22,6 +22,7 @@
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
#define MULT_FIX_C(x, y) (((uint64_t)(x) * (y) + ROUNDER) >> WEBP_RESCALER_RFIX)
+#define MULT_FIX_FLOOR_C(x, y) (((uint64_t)(x) * (y)) >> WEBP_RESCALER_RFIX)
#define LOAD_32x4(SRC, DST) const uint32x4_t DST = vld1q_u32((SRC))
#define LOAD_32x8(SRC, DST0, DST1) \
@@ -35,8 +36,11 @@
#if (WEBP_RESCALER_RFIX == 32)
#define MAKE_HALF_CST(C) vdupq_n_s32((int32_t)((C) >> 1))
-#define MULT_FIX(A, B) /* note: B is actualy scale>>1. See MAKE_HALF_CST */ \
+// note: B is actualy scale>>1. See MAKE_HALF_CST
+#define MULT_FIX(A, B) \
vreinterpretq_u32_s32(vqrdmulhq_s32(vreinterpretq_s32_u32((A)), (B)))
+#define MULT_FIX_FLOOR(A, B) \
+ vreinterpretq_u32_s32(vqdmulhq_s32(vreinterpretq_s32_u32((A)), (B)))
#else
#error "MULT_FIX/WEBP_RESCALER_RFIX need some more work"
#endif
@@ -135,8 +139,8 @@ static void RescalerExportRowShrink_NEON(WebPRescaler* const wrk) {
const uint32x4_t A1 = MULT_FIX(in1, yscale_half);
const uint32x4_t B0 = vqsubq_u32(in2, A0);
const uint32x4_t B1 = vqsubq_u32(in3, A1);
- const uint32x4_t C0 = MULT_FIX(B0, fxy_scale_half);
- const uint32x4_t C1 = MULT_FIX(B1, fxy_scale_half);
+ const uint32x4_t C0 = MULT_FIX_FLOOR(B0, fxy_scale_half);
+ const uint32x4_t C1 = MULT_FIX_FLOOR(B1, fxy_scale_half);
const uint16x4_t D0 = vmovn_u32(C0);
const uint16x4_t D1 = vmovn_u32(C1);
const uint8x8_t E = vmovn_u16(vcombine_u16(D0, D1));
@@ -145,7 +149,7 @@ static void RescalerExportRowShrink_NEON(WebPRescaler* const wrk) {
}
for (; x_out < x_out_max; ++x_out) {
const uint32_t frac = (uint32_t)MULT_FIX_C(frow[x_out], yscale);
- const int v = (int)MULT_FIX_C(irow[x_out] - frac, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR_C(irow[x_out] - frac, fxy_scale);
assert(v >= 0 && v <= 255);
dst[x_out] = v;
irow[x_out] = frac; // new fractional start
@@ -170,6 +174,12 @@ static void RescalerExportRowShrink_NEON(WebPRescaler* const wrk) {
}
}
+#undef MULT_FIX_FLOOR_C
+#undef MULT_FIX_C
+#undef MULT_FIX_FLOOR
+#undef MULT_FIX
+#undef ROUNDER
+
//------------------------------------------------------------------------------
extern void WebPRescalerDspInitNEON(void);
diff --git a/thirdparty/libwebp/src/dsp/rescaler_sse2.c b/thirdparty/libwebp/src/dsp/rescaler_sse2.c
index 64c50deab5..f7461a452c 100644
--- a/thirdparty/libwebp/src/dsp/rescaler_sse2.c
+++ b/thirdparty/libwebp/src/dsp/rescaler_sse2.c
@@ -25,6 +25,7 @@
#define ROUNDER (WEBP_RESCALER_ONE >> 1)
#define MULT_FIX(x, y) (((uint64_t)(x) * (y) + ROUNDER) >> WEBP_RESCALER_RFIX)
+#define MULT_FIX_FLOOR(x, y) (((uint64_t)(x) * (y)) >> WEBP_RESCALER_RFIX)
// input: 8 bytes ABCDEFGH -> output: A0E0B0F0C0G0D0H0
static void LoadTwoPixels_SSE2(const uint8_t* const src, __m128i* out) {
@@ -224,6 +225,35 @@ static WEBP_INLINE void ProcessRow_SSE2(const __m128i* const A0,
_mm_storel_epi64((__m128i*)dst, G);
}
+static WEBP_INLINE void ProcessRow_Floor_SSE2(const __m128i* const A0,
+ const __m128i* const A1,
+ const __m128i* const A2,
+ const __m128i* const A3,
+ const __m128i* const mult,
+ uint8_t* const dst) {
+ const __m128i mask = _mm_set_epi32(0xffffffffu, 0, 0xffffffffu, 0);
+ const __m128i B0 = _mm_mul_epu32(*A0, *mult);
+ const __m128i B1 = _mm_mul_epu32(*A1, *mult);
+ const __m128i B2 = _mm_mul_epu32(*A2, *mult);
+ const __m128i B3 = _mm_mul_epu32(*A3, *mult);
+ const __m128i D0 = _mm_srli_epi64(B0, WEBP_RESCALER_RFIX);
+ const __m128i D1 = _mm_srli_epi64(B1, WEBP_RESCALER_RFIX);
+#if (WEBP_RESCALER_RFIX < 32)
+ const __m128i D2 =
+ _mm_and_si128(_mm_slli_epi64(B2, 32 - WEBP_RESCALER_RFIX), mask);
+ const __m128i D3 =
+ _mm_and_si128(_mm_slli_epi64(B3, 32 - WEBP_RESCALER_RFIX), mask);
+#else
+ const __m128i D2 = _mm_and_si128(B2, mask);
+ const __m128i D3 = _mm_and_si128(B3, mask);
+#endif
+ const __m128i E0 = _mm_or_si128(D0, D2);
+ const __m128i E1 = _mm_or_si128(D1, D3);
+ const __m128i F = _mm_packs_epi32(E0, E1);
+ const __m128i G = _mm_packus_epi16(F, F);
+ _mm_storel_epi64((__m128i*)dst, G);
+}
+
static void RescalerExportRowExpand_SSE2(WebPRescaler* const wrk) {
int x_out;
uint8_t* const dst = wrk->dst;
@@ -322,12 +352,12 @@ static void RescalerExportRowShrink_SSE2(WebPRescaler* const wrk) {
const __m128i G1 = _mm_or_si128(D1, F3);
_mm_storeu_si128((__m128i*)(irow + x_out + 0), G0);
_mm_storeu_si128((__m128i*)(irow + x_out + 4), G1);
- ProcessRow_SSE2(&E0, &E1, &E2, &E3, &mult_xy, dst + x_out);
+ ProcessRow_Floor_SSE2(&E0, &E1, &E2, &E3, &mult_xy, dst + x_out);
}
}
for (; x_out < x_out_max; ++x_out) {
const uint32_t frac = (int)MULT_FIX(frow[x_out], yscale);
- const int v = (int)MULT_FIX(irow[x_out] - frac, wrk->fxy_scale);
+ const int v = (int)MULT_FIX_FLOOR(irow[x_out] - frac, wrk->fxy_scale);
assert(v >= 0 && v <= 255);
dst[x_out] = v;
irow[x_out] = frac; // new fractional start
@@ -352,6 +382,7 @@ static void RescalerExportRowShrink_SSE2(WebPRescaler* const wrk) {
}
}
+#undef MULT_FIX_FLOOR
#undef MULT_FIX
#undef ROUNDER
diff --git a/thirdparty/libwebp/src/dsp/yuv.h b/thirdparty/libwebp/src/dsp/yuv.h
index eb787270d2..c12be1d094 100644
--- a/thirdparty/libwebp/src/dsp/yuv.h
+++ b/thirdparty/libwebp/src/dsp/yuv.h
@@ -207,4 +207,4 @@ static WEBP_INLINE int VP8RGBToV(int r, int g, int b, int rounding) {
} // extern "C"
#endif
-#endif /* WEBP_DSP_YUV_H_ */
+#endif // WEBP_DSP_YUV_H_
diff --git a/thirdparty/libwebp/src/enc/analysis_enc.c b/thirdparty/libwebp/src/enc/analysis_enc.c
index a47ff7d4e8..687757ae03 100644
--- a/thirdparty/libwebp/src/enc/analysis_enc.c
+++ b/thirdparty/libwebp/src/enc/analysis_enc.c
@@ -458,7 +458,7 @@ static void MergeJobs(const SegmentJob* const src, SegmentJob* const dst) {
dst->uv_alpha += src->uv_alpha;
}
-// initialize the job struct with some TODOs
+// initialize the job struct with some tasks to perform
static void InitSegmentJob(VP8Encoder* const enc, SegmentJob* const job,
int start_row, int end_row) {
WebPGetWorkerInterface()->Init(&job->worker);
diff --git a/thirdparty/libwebp/src/enc/backward_references_cost_enc.c b/thirdparty/libwebp/src/enc/backward_references_cost_enc.c
index 7175496c7f..516abd73eb 100644
--- a/thirdparty/libwebp/src/enc/backward_references_cost_enc.c
+++ b/thirdparty/libwebp/src/enc/backward_references_cost_enc.c
@@ -67,7 +67,7 @@ static int CostModelBuild(CostModel* const m, int xsize, int cache_bits,
// The following code is similar to VP8LHistogramCreate but converts the
// distance to plane code.
- VP8LHistogramInit(histo, cache_bits);
+ VP8LHistogramInit(histo, cache_bits, /*init_arrays=*/ 1);
while (VP8LRefsCursorOk(&c)) {
VP8LHistogramAddSinglePixOrCopy(histo, c.cur_pos, VP8LDistanceToPlaneCode,
xsize);
diff --git a/thirdparty/libwebp/src/enc/backward_references_enc.c b/thirdparty/libwebp/src/enc/backward_references_enc.c
index 39230188b9..3ab7b0ac7d 100644
--- a/thirdparty/libwebp/src/enc/backward_references_enc.c
+++ b/thirdparty/libwebp/src/enc/backward_references_enc.c
@@ -715,6 +715,7 @@ static int CalculateBestCacheSize(const uint32_t* argb, int quality,
for (i = 0; i <= cache_bits_max; ++i) {
histos[i] = VP8LAllocateHistogram(i);
if (histos[i] == NULL) goto Error;
+ VP8LHistogramInit(histos[i], i, /*init_arrays=*/ 1);
if (i == 0) continue;
cc_init[i] = VP8LColorCacheInit(&hashers[i], i);
if (!cc_init[i]) goto Error;
diff --git a/thirdparty/libwebp/src/enc/cost_enc.h b/thirdparty/libwebp/src/enc/cost_enc.h
index bdce1e6a3b..a4b177b342 100644
--- a/thirdparty/libwebp/src/enc/cost_enc.h
+++ b/thirdparty/libwebp/src/enc/cost_enc.h
@@ -79,4 +79,4 @@ extern const uint16_t VP8FixedCostsI4[NUM_BMODES][NUM_BMODES][NUM_BMODES];
} // extern "C"
#endif
-#endif /* WEBP_ENC_COST_ENC_H_ */
+#endif // WEBP_ENC_COST_ENC_H_
diff --git a/thirdparty/libwebp/src/enc/delta_palettization_enc.c b/thirdparty/libwebp/src/enc/delta_palettization_enc.c
deleted file mode 100644
index a61c8e6c93..0000000000
--- a/thirdparty/libwebp/src/enc/delta_palettization_enc.c
+++ /dev/null
@@ -1,455 +0,0 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// Author: Mislav Bradac (mislavm@google.com)
-//
-
-#include "src/enc/delta_palettization_enc.h"
-
-#ifdef WEBP_EXPERIMENTAL_FEATURES
-#include "src/webp/types.h"
-#include "src/dsp/lossless.h"
-
-#define MK_COL(r, g, b) (((r) << 16) + ((g) << 8) + (b))
-
-// Format allows palette up to 256 entries, but more palette entries produce
-// bigger entropy. In the future it will probably be useful to add more entries
-// that are far from the origin of the palette or choose remaining entries
-// dynamically.
-#define DELTA_PALETTE_SIZE 226
-
-// Palette used for delta_palettization. Entries are roughly sorted by distance
-// of their signed equivalents from the origin.
-static const uint32_t kDeltaPalette[DELTA_PALETTE_SIZE] = {
- MK_COL(0u, 0u, 0u),
- MK_COL(255u, 255u, 255u),
- MK_COL(1u, 1u, 1u),
- MK_COL(254u, 254u, 254u),
- MK_COL(2u, 2u, 2u),
- MK_COL(4u, 4u, 4u),
- MK_COL(252u, 252u, 252u),
- MK_COL(250u, 0u, 0u),
- MK_COL(0u, 250u, 0u),
- MK_COL(0u, 0u, 250u),
- MK_COL(6u, 0u, 0u),
- MK_COL(0u, 6u, 0u),
- MK_COL(0u, 0u, 6u),
- MK_COL(0u, 0u, 248u),
- MK_COL(0u, 0u, 8u),
- MK_COL(0u, 248u, 0u),
- MK_COL(0u, 248u, 248u),
- MK_COL(0u, 248u, 8u),
- MK_COL(0u, 8u, 0u),
- MK_COL(0u, 8u, 248u),
- MK_COL(0u, 8u, 8u),
- MK_COL(8u, 8u, 8u),
- MK_COL(248u, 0u, 0u),
- MK_COL(248u, 0u, 248u),
- MK_COL(248u, 0u, 8u),
- MK_COL(248u, 248u, 0u),
- MK_COL(248u, 8u, 0u),
- MK_COL(8u, 0u, 0u),
- MK_COL(8u, 0u, 248u),
- MK_COL(8u, 0u, 8u),
- MK_COL(8u, 248u, 0u),
- MK_COL(8u, 8u, 0u),
- MK_COL(23u, 23u, 23u),
- MK_COL(13u, 13u, 13u),
- MK_COL(232u, 232u, 232u),
- MK_COL(244u, 244u, 244u),
- MK_COL(245u, 245u, 250u),
- MK_COL(50u, 50u, 50u),
- MK_COL(204u, 204u, 204u),
- MK_COL(236u, 236u, 236u),
- MK_COL(16u, 16u, 16u),
- MK_COL(240u, 16u, 16u),
- MK_COL(16u, 240u, 16u),
- MK_COL(240u, 240u, 16u),
- MK_COL(16u, 16u, 240u),
- MK_COL(240u, 16u, 240u),
- MK_COL(16u, 240u, 240u),
- MK_COL(240u, 240u, 240u),
- MK_COL(0u, 0u, 232u),
- MK_COL(0u, 232u, 0u),
- MK_COL(232u, 0u, 0u),
- MK_COL(0u, 0u, 24u),
- MK_COL(0u, 24u, 0u),
- MK_COL(24u, 0u, 0u),
- MK_COL(32u, 32u, 32u),
- MK_COL(224u, 32u, 32u),
- MK_COL(32u, 224u, 32u),
- MK_COL(224u, 224u, 32u),
- MK_COL(32u, 32u, 224u),
- MK_COL(224u, 32u, 224u),
- MK_COL(32u, 224u, 224u),
- MK_COL(224u, 224u, 224u),
- MK_COL(0u, 0u, 176u),
- MK_COL(0u, 0u, 80u),
- MK_COL(0u, 176u, 0u),
- MK_COL(0u, 176u, 176u),
- MK_COL(0u, 176u, 80u),
- MK_COL(0u, 80u, 0u),
- MK_COL(0u, 80u, 176u),
- MK_COL(0u, 80u, 80u),
- MK_COL(176u, 0u, 0u),
- MK_COL(176u, 0u, 176u),
- MK_COL(176u, 0u, 80u),
- MK_COL(176u, 176u, 0u),
- MK_COL(176u, 80u, 0u),
- MK_COL(80u, 0u, 0u),
- MK_COL(80u, 0u, 176u),
- MK_COL(80u, 0u, 80u),
- MK_COL(80u, 176u, 0u),
- MK_COL(80u, 80u, 0u),
- MK_COL(0u, 0u, 152u),
- MK_COL(0u, 0u, 104u),
- MK_COL(0u, 152u, 0u),
- MK_COL(0u, 152u, 152u),
- MK_COL(0u, 152u, 104u),
- MK_COL(0u, 104u, 0u),
- MK_COL(0u, 104u, 152u),
- MK_COL(0u, 104u, 104u),
- MK_COL(152u, 0u, 0u),
- MK_COL(152u, 0u, 152u),
- MK_COL(152u, 0u, 104u),
- MK_COL(152u, 152u, 0u),
- MK_COL(152u, 104u, 0u),
- MK_COL(104u, 0u, 0u),
- MK_COL(104u, 0u, 152u),
- MK_COL(104u, 0u, 104u),
- MK_COL(104u, 152u, 0u),
- MK_COL(104u, 104u, 0u),
- MK_COL(216u, 216u, 216u),
- MK_COL(216u, 216u, 40u),
- MK_COL(216u, 216u, 176u),
- MK_COL(216u, 216u, 80u),
- MK_COL(216u, 40u, 216u),
- MK_COL(216u, 40u, 40u),
- MK_COL(216u, 40u, 176u),
- MK_COL(216u, 40u, 80u),
- MK_COL(216u, 176u, 216u),
- MK_COL(216u, 176u, 40u),
- MK_COL(216u, 176u, 176u),
- MK_COL(216u, 176u, 80u),
- MK_COL(216u, 80u, 216u),
- MK_COL(216u, 80u, 40u),
- MK_COL(216u, 80u, 176u),
- MK_COL(216u, 80u, 80u),
- MK_COL(40u, 216u, 216u),
- MK_COL(40u, 216u, 40u),
- MK_COL(40u, 216u, 176u),
- MK_COL(40u, 216u, 80u),
- MK_COL(40u, 40u, 216u),
- MK_COL(40u, 40u, 40u),
- MK_COL(40u, 40u, 176u),
- MK_COL(40u, 40u, 80u),
- MK_COL(40u, 176u, 216u),
- MK_COL(40u, 176u, 40u),
- MK_COL(40u, 176u, 176u),
- MK_COL(40u, 176u, 80u),
- MK_COL(40u, 80u, 216u),
- MK_COL(40u, 80u, 40u),
- MK_COL(40u, 80u, 176u),
- MK_COL(40u, 80u, 80u),
- MK_COL(80u, 216u, 216u),
- MK_COL(80u, 216u, 40u),
- MK_COL(80u, 216u, 176u),
- MK_COL(80u, 216u, 80u),
- MK_COL(80u, 40u, 216u),
- MK_COL(80u, 40u, 40u),
- MK_COL(80u, 40u, 176u),
- MK_COL(80u, 40u, 80u),
- MK_COL(80u, 176u, 216u),
- MK_COL(80u, 176u, 40u),
- MK_COL(80u, 176u, 176u),
- MK_COL(80u, 176u, 80u),
- MK_COL(80u, 80u, 216u),
- MK_COL(80u, 80u, 40u),
- MK_COL(80u, 80u, 176u),
- MK_COL(80u, 80u, 80u),
- MK_COL(0u, 0u, 192u),
- MK_COL(0u, 0u, 64u),
- MK_COL(0u, 0u, 128u),
- MK_COL(0u, 192u, 0u),
- MK_COL(0u, 192u, 192u),
- MK_COL(0u, 192u, 64u),
- MK_COL(0u, 192u, 128u),
- MK_COL(0u, 64u, 0u),
- MK_COL(0u, 64u, 192u),
- MK_COL(0u, 64u, 64u),
- MK_COL(0u, 64u, 128u),
- MK_COL(0u, 128u, 0u),
- MK_COL(0u, 128u, 192u),
- MK_COL(0u, 128u, 64u),
- MK_COL(0u, 128u, 128u),
- MK_COL(176u, 216u, 216u),
- MK_COL(176u, 216u, 40u),
- MK_COL(176u, 216u, 176u),
- MK_COL(176u, 216u, 80u),
- MK_COL(176u, 40u, 216u),
- MK_COL(176u, 40u, 40u),
- MK_COL(176u, 40u, 176u),
- MK_COL(176u, 40u, 80u),
- MK_COL(176u, 176u, 216u),
- MK_COL(176u, 176u, 40u),
- MK_COL(176u, 176u, 176u),
- MK_COL(176u, 176u, 80u),
- MK_COL(176u, 80u, 216u),
- MK_COL(176u, 80u, 40u),
- MK_COL(176u, 80u, 176u),
- MK_COL(176u, 80u, 80u),
- MK_COL(192u, 0u, 0u),
- MK_COL(192u, 0u, 192u),
- MK_COL(192u, 0u, 64u),
- MK_COL(192u, 0u, 128u),
- MK_COL(192u, 192u, 0u),
- MK_COL(192u, 192u, 192u),
- MK_COL(192u, 192u, 64u),
- MK_COL(192u, 192u, 128u),
- MK_COL(192u, 64u, 0u),
- MK_COL(192u, 64u, 192u),
- MK_COL(192u, 64u, 64u),
- MK_COL(192u, 64u, 128u),
- MK_COL(192u, 128u, 0u),
- MK_COL(192u, 128u, 192u),
- MK_COL(192u, 128u, 64u),
- MK_COL(192u, 128u, 128u),
- MK_COL(64u, 0u, 0u),
- MK_COL(64u, 0u, 192u),
- MK_COL(64u, 0u, 64u),
- MK_COL(64u, 0u, 128u),
- MK_COL(64u, 192u, 0u),
- MK_COL(64u, 192u, 192u),
- MK_COL(64u, 192u, 64u),
- MK_COL(64u, 192u, 128u),
- MK_COL(64u, 64u, 0u),
- MK_COL(64u, 64u, 192u),
- MK_COL(64u, 64u, 64u),
- MK_COL(64u, 64u, 128u),
- MK_COL(64u, 128u, 0u),
- MK_COL(64u, 128u, 192u),
- MK_COL(64u, 128u, 64u),
- MK_COL(64u, 128u, 128u),
- MK_COL(128u, 0u, 0u),
- MK_COL(128u, 0u, 192u),
- MK_COL(128u, 0u, 64u),
- MK_COL(128u, 0u, 128u),
- MK_COL(128u, 192u, 0u),
- MK_COL(128u, 192u, 192u),
- MK_COL(128u, 192u, 64u),
- MK_COL(128u, 192u, 128u),
- MK_COL(128u, 64u, 0u),
- MK_COL(128u, 64u, 192u),
- MK_COL(128u, 64u, 64u),
- MK_COL(128u, 64u, 128u),
- MK_COL(128u, 128u, 0u),
- MK_COL(128u, 128u, 192u),
- MK_COL(128u, 128u, 64u),
- MK_COL(128u, 128u, 128u),
-};
-
-#undef MK_COL
-
-//------------------------------------------------------------------------------
-// TODO(skal): move the functions to dsp/lossless.c when the correct
-// granularity is found. For now, we'll just copy-paste some useful bits
-// here instead.
-
-// In-place sum of each component with mod 256.
-static WEBP_INLINE void AddPixelsEq(uint32_t* a, uint32_t b) {
- const uint32_t alpha_and_green = (*a & 0xff00ff00u) + (b & 0xff00ff00u);
- const uint32_t red_and_blue = (*a & 0x00ff00ffu) + (b & 0x00ff00ffu);
- *a = (alpha_and_green & 0xff00ff00u) | (red_and_blue & 0x00ff00ffu);
-}
-
-static WEBP_INLINE uint32_t Clip255(uint32_t a) {
- if (a < 256) {
- return a;
- }
- // return 0, when a is a negative integer.
- // return 255, when a is positive.
- return ~a >> 24;
-}
-
-// Delta palettization functions.
-static WEBP_INLINE int Square(int x) {
- return x * x;
-}
-
-static WEBP_INLINE uint32_t Intensity(uint32_t a) {
- return
- 30 * ((a >> 16) & 0xff) +
- 59 * ((a >> 8) & 0xff) +
- 11 * ((a >> 0) & 0xff);
-}
-
-static uint32_t CalcDist(uint32_t predicted_value, uint32_t actual_value,
- uint32_t palette_entry) {
- int i;
- uint32_t distance = 0;
- AddPixelsEq(&predicted_value, palette_entry);
- for (i = 0; i < 32; i += 8) {
- const int32_t av = (actual_value >> i) & 0xff;
- const int32_t pv = (predicted_value >> i) & 0xff;
- distance += Square(pv - av);
- }
- // We sum square of intensity difference with factor 10, but because Intensity
- // returns 100 times real intensity we need to multiply differences of colors
- // by 1000.
- distance *= 1000u;
- distance += Square(Intensity(predicted_value)
- - Intensity(actual_value));
- return distance;
-}
-
-static uint32_t Predict(int x, int y, uint32_t* image) {
- const uint32_t t = (y == 0) ? ARGB_BLACK : image[x];
- const uint32_t l = (x == 0) ? ARGB_BLACK : image[x - 1];
- const uint32_t p =
- (((((t >> 24) & 0xff) + ((l >> 24) & 0xff)) / 2) << 24) +
- (((((t >> 16) & 0xff) + ((l >> 16) & 0xff)) / 2) << 16) +
- (((((t >> 8) & 0xff) + ((l >> 8) & 0xff)) / 2) << 8) +
- (((((t >> 0) & 0xff) + ((l >> 0) & 0xff)) / 2) << 0);
- if (x == 0 && y == 0) return ARGB_BLACK;
- if (x == 0) return t;
- if (y == 0) return l;
- return p;
-}
-
-static WEBP_INLINE int AddSubtractComponentFullWithCoefficient(
- int a, int b, int c) {
- return Clip255(a + ((b - c) >> 2));
-}
-
-static WEBP_INLINE uint32_t ClampedAddSubtractFullWithCoefficient(
- uint32_t c0, uint32_t c1, uint32_t c2) {
- const int a = AddSubtractComponentFullWithCoefficient(
- c0 >> 24, c1 >> 24, c2 >> 24);
- const int r = AddSubtractComponentFullWithCoefficient((c0 >> 16) & 0xff,
- (c1 >> 16) & 0xff,
- (c2 >> 16) & 0xff);
- const int g = AddSubtractComponentFullWithCoefficient((c0 >> 8) & 0xff,
- (c1 >> 8) & 0xff,
- (c2 >> 8) & 0xff);
- const int b = AddSubtractComponentFullWithCoefficient(
- c0 & 0xff, c1 & 0xff, c2 & 0xff);
- return ((uint32_t)a << 24) | (r << 16) | (g << 8) | b;
-}
-
-//------------------------------------------------------------------------------
-
-// Find palette entry with minimum error from difference of actual pixel value
-// and predicted pixel value. Propagate error of pixel to its top and left pixel
-// in src array. Write predicted_value + palette_entry to new_image. Return
-// index of best palette entry.
-static int FindBestPaletteEntry(uint32_t src, uint32_t predicted_value,
- const uint32_t palette[], int palette_size) {
- int i;
- int idx = 0;
- uint32_t best_distance = CalcDist(predicted_value, src, palette[0]);
- for (i = 1; i < palette_size; ++i) {
- const uint32_t distance = CalcDist(predicted_value, src, palette[i]);
- if (distance < best_distance) {
- best_distance = distance;
- idx = i;
- }
- }
- return idx;
-}
-
-static void ApplyBestPaletteEntry(int x, int y,
- uint32_t new_value, uint32_t palette_value,
- uint32_t* src, int src_stride,
- uint32_t* new_image) {
- AddPixelsEq(&new_value, palette_value);
- if (x > 0) {
- src[x - 1] = ClampedAddSubtractFullWithCoefficient(src[x - 1],
- new_value, src[x]);
- }
- if (y > 0) {
- src[x - src_stride] =
- ClampedAddSubtractFullWithCoefficient(src[x - src_stride],
- new_value, src[x]);
- }
- new_image[x] = new_value;
-}
-
-//------------------------------------------------------------------------------
-// Main entry point
-
-static WebPEncodingError ApplyDeltaPalette(uint32_t* src, uint32_t* dst,
- uint32_t src_stride,
- uint32_t dst_stride,
- const uint32_t* palette,
- int palette_size,
- int width, int height,
- int num_passes) {
- int x, y;
- WebPEncodingError err = VP8_ENC_OK;
- uint32_t* new_image = (uint32_t*)WebPSafeMalloc(width, sizeof(*new_image));
- uint8_t* const tmp_row = (uint8_t*)WebPSafeMalloc(width, sizeof(*tmp_row));
- if (new_image == NULL || tmp_row == NULL) {
- err = VP8_ENC_ERROR_OUT_OF_MEMORY;
- goto Error;
- }
-
- while (num_passes--) {
- uint32_t* cur_src = src;
- uint32_t* cur_dst = dst;
- for (y = 0; y < height; ++y) {
- for (x = 0; x < width; ++x) {
- const uint32_t predicted_value = Predict(x, y, new_image);
- tmp_row[x] = FindBestPaletteEntry(cur_src[x], predicted_value,
- palette, palette_size);
- ApplyBestPaletteEntry(x, y, predicted_value, palette[tmp_row[x]],
- cur_src, src_stride, new_image);
- }
- for (x = 0; x < width; ++x) {
- cur_dst[x] = palette[tmp_row[x]];
- }
- cur_src += src_stride;
- cur_dst += dst_stride;
- }
- }
- Error:
- WebPSafeFree(new_image);
- WebPSafeFree(tmp_row);
- return err;
-}
-
-// replaces enc->argb_ by a palettizable approximation of it,
-// and generates optimal enc->palette_[]
-WebPEncodingError WebPSearchOptimalDeltaPalette(VP8LEncoder* const enc) {
- const WebPPicture* const pic = enc->pic_;
- uint32_t* src = pic->argb;
- uint32_t* dst = enc->argb_;
- const int width = pic->width;
- const int height = pic->height;
-
- WebPEncodingError err = VP8_ENC_OK;
- memcpy(enc->palette_, kDeltaPalette, sizeof(kDeltaPalette));
- enc->palette_[DELTA_PALETTE_SIZE - 1] = src[0] - 0xff000000u;
- enc->palette_size_ = DELTA_PALETTE_SIZE;
- err = ApplyDeltaPalette(src, dst, pic->argb_stride, enc->current_width_,
- enc->palette_, enc->palette_size_,
- width, height, 2);
- if (err != VP8_ENC_OK) goto Error;
-
- Error:
- return err;
-}
-
-#else // !WEBP_EXPERIMENTAL_FEATURES
-
-WebPEncodingError WebPSearchOptimalDeltaPalette(VP8LEncoder* const enc) {
- (void)enc;
- return VP8_ENC_ERROR_INVALID_CONFIGURATION;
-}
-
-#endif // WEBP_EXPERIMENTAL_FEATURES
diff --git a/thirdparty/libwebp/src/enc/delta_palettization_enc.h b/thirdparty/libwebp/src/enc/delta_palettization_enc.h
deleted file mode 100644
index b15e2cd487..0000000000
--- a/thirdparty/libwebp/src/enc/delta_palettization_enc.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the COPYING file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS. All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-// -----------------------------------------------------------------------------
-//
-// Author: Mislav Bradac (mislavm@google.com)
-//
-
-#ifndef WEBP_ENC_DELTA_PALETTIZATION_ENC_H_
-#define WEBP_ENC_DELTA_PALETTIZATION_ENC_H_
-
-#include "src/webp/encode.h"
-#include "src/enc/vp8li_enc.h"
-
-// Replaces enc->argb_[] input by a palettizable approximation of it,
-// and generates optimal enc->palette_[].
-// This function can revert enc->use_palette_ / enc->use_predict_ flag
-// if delta-palettization is not producing expected saving.
-WebPEncodingError WebPSearchOptimalDeltaPalette(VP8LEncoder* const enc);
-
-#endif // WEBP_ENC_DELTA_PALETTIZATION_ENC_H_
diff --git a/thirdparty/libwebp/src/enc/histogram_enc.c b/thirdparty/libwebp/src/enc/histogram_enc.c
index 9fdbc627a1..4e49e0a201 100644
--- a/thirdparty/libwebp/src/enc/histogram_enc.c
+++ b/thirdparty/libwebp/src/enc/histogram_enc.c
@@ -51,10 +51,12 @@ static void HistogramCopy(const VP8LHistogram* const src,
VP8LHistogram* const dst) {
uint32_t* const dst_literal = dst->literal_;
const int dst_cache_bits = dst->palette_code_bits_;
+ const int literal_size = VP8LHistogramNumCodes(dst_cache_bits);
const int histo_size = VP8LGetHistogramSize(dst_cache_bits);
assert(src->palette_code_bits_ == dst_cache_bits);
memcpy(dst, src, histo_size);
dst->literal_ = dst_literal;
+ memcpy(dst->literal_, src->literal_, literal_size * sizeof(*dst->literal_));
}
int VP8LGetHistogramSize(int cache_bits) {
@@ -91,9 +93,19 @@ void VP8LHistogramCreate(VP8LHistogram* const p,
VP8LHistogramStoreRefs(refs, p);
}
-void VP8LHistogramInit(VP8LHistogram* const p, int palette_code_bits) {
+void VP8LHistogramInit(VP8LHistogram* const p, int palette_code_bits,
+ int init_arrays) {
p->palette_code_bits_ = palette_code_bits;
- HistogramClear(p);
+ if (init_arrays) {
+ HistogramClear(p);
+ } else {
+ p->trivial_symbol_ = 0;
+ p->bit_cost_ = 0.;
+ p->literal_cost_ = 0.;
+ p->red_cost_ = 0.;
+ p->blue_cost_ = 0.;
+ memset(p->is_used_, 0, sizeof(p->is_used_));
+ }
}
VP8LHistogram* VP8LAllocateHistogram(int cache_bits) {
@@ -104,37 +116,70 @@ VP8LHistogram* VP8LAllocateHistogram(int cache_bits) {
histo = (VP8LHistogram*)memory;
// literal_ won't necessary be aligned.
histo->literal_ = (uint32_t*)(memory + sizeof(VP8LHistogram));
- VP8LHistogramInit(histo, cache_bits);
+ VP8LHistogramInit(histo, cache_bits, /*init_arrays=*/ 0);
return histo;
}
+// Resets the pointers of the histograms to point to the bit buffer in the set.
+static void HistogramSetResetPointers(VP8LHistogramSet* const set,
+ int cache_bits) {
+ int i;
+ const int histo_size = VP8LGetHistogramSize(cache_bits);
+ uint8_t* memory = (uint8_t*) (set->histograms);
+ memory += set->max_size * sizeof(*set->histograms);
+ for (i = 0; i < set->max_size; ++i) {
+ memory = (uint8_t*) WEBP_ALIGN(memory);
+ set->histograms[i] = (VP8LHistogram*) memory;
+ // literal_ won't necessary be aligned.
+ set->histograms[i]->literal_ = (uint32_t*)(memory + sizeof(VP8LHistogram));
+ memory += histo_size;
+ }
+}
+
+// Returns the total size of the VP8LHistogramSet.
+static size_t HistogramSetTotalSize(int size, int cache_bits) {
+ const int histo_size = VP8LGetHistogramSize(cache_bits);
+ return (sizeof(VP8LHistogramSet) + size * (sizeof(VP8LHistogram*) +
+ histo_size + WEBP_ALIGN_CST));
+}
+
VP8LHistogramSet* VP8LAllocateHistogramSet(int size, int cache_bits) {
int i;
VP8LHistogramSet* set;
- const int histo_size = VP8LGetHistogramSize(cache_bits);
- const size_t total_size =
- sizeof(*set) + size * (sizeof(*set->histograms) +
- histo_size + WEBP_ALIGN_CST);
+ const size_t total_size = HistogramSetTotalSize(size, cache_bits);
uint8_t* memory = (uint8_t*)WebPSafeMalloc(total_size, sizeof(*memory));
if (memory == NULL) return NULL;
set = (VP8LHistogramSet*)memory;
memory += sizeof(*set);
set->histograms = (VP8LHistogram**)memory;
- memory += size * sizeof(*set->histograms);
set->max_size = size;
set->size = size;
+ HistogramSetResetPointers(set, cache_bits);
for (i = 0; i < size; ++i) {
- memory = (uint8_t*)WEBP_ALIGN(memory);
- set->histograms[i] = (VP8LHistogram*)memory;
- // literal_ won't necessary be aligned.
- set->histograms[i]->literal_ = (uint32_t*)(memory + sizeof(VP8LHistogram));
- VP8LHistogramInit(set->histograms[i], cache_bits);
- memory += histo_size;
+ VP8LHistogramInit(set->histograms[i], cache_bits, /*init_arrays=*/ 0);
}
return set;
}
+void VP8LHistogramSetClear(VP8LHistogramSet* const set) {
+ int i;
+ const int cache_bits = set->histograms[0]->palette_code_bits_;
+ const int size = set->size;
+ const size_t total_size = HistogramSetTotalSize(size, cache_bits);
+ uint8_t* memory = (uint8_t*)set;
+
+ memset(memory, 0, total_size);
+ memory += sizeof(*set);
+ set->histograms = (VP8LHistogram**)memory;
+ set->max_size = size;
+ set->size = size;
+ HistogramSetResetPointers(set, cache_bits);
+ for (i = 0; i < size; ++i) {
+ set->histograms[i]->palette_code_bits_ = cache_bits;
+ }
+}
+
// -----------------------------------------------------------------------------
void VP8LHistogramAddSinglePixOrCopy(VP8LHistogram* const histo,
@@ -237,7 +282,8 @@ static double FinalHuffmanCost(const VP8LStreaks* const stats) {
// Get the symbol entropy for the distribution 'population'.
// Set 'trivial_sym', if there's only one symbol present in the distribution.
static double PopulationCost(const uint32_t* const population, int length,
- uint32_t* const trivial_sym) {
+ uint32_t* const trivial_sym,
+ uint8_t* const is_used) {
VP8LBitEntropy bit_entropy;
VP8LStreaks stats;
VP8LGetEntropyUnrefined(population, length, &bit_entropy, &stats);
@@ -245,6 +291,8 @@ static double PopulationCost(const uint32_t* const population, int length,
*trivial_sym = (bit_entropy.nonzeros == 1) ? bit_entropy.nonzero_code
: VP8L_NON_TRIVIAL_SYM;
}
+ // The histogram is used if there is at least one non-zero streak.
+ *is_used = (stats.streaks[1][0] != 0 || stats.streaks[1][1] != 0);
return BitsEntropyRefine(&bit_entropy) + FinalHuffmanCost(&stats);
}
@@ -253,7 +301,9 @@ static double PopulationCost(const uint32_t* const population, int length,
// non-zero: both the zero-th one, or both the last one.
static WEBP_INLINE double GetCombinedEntropy(const uint32_t* const X,
const uint32_t* const Y,
- int length, int trivial_at_end) {
+ int length, int is_X_used,
+ int is_Y_used,
+ int trivial_at_end) {
VP8LStreaks stats;
if (trivial_at_end) {
// This configuration is due to palettization that transforms an indexed
@@ -262,28 +312,43 @@ static WEBP_INLINE double GetCombinedEntropy(const uint32_t* const X,
// Only FinalHuffmanCost needs to be evaluated.
memset(&stats, 0, sizeof(stats));
// Deal with the non-zero value at index 0 or length-1.
- stats.streaks[1][0] += 1;
+ stats.streaks[1][0] = 1;
// Deal with the following/previous zero streak.
- stats.counts[0] += 1;
- stats.streaks[0][1] += length - 1;
+ stats.counts[0] = 1;
+ stats.streaks[0][1] = length - 1;
return FinalHuffmanCost(&stats);
} else {
VP8LBitEntropy bit_entropy;
- VP8LGetCombinedEntropyUnrefined(X, Y, length, &bit_entropy, &stats);
+ if (is_X_used) {
+ if (is_Y_used) {
+ VP8LGetCombinedEntropyUnrefined(X, Y, length, &bit_entropy, &stats);
+ } else {
+ VP8LGetEntropyUnrefined(X, length, &bit_entropy, &stats);
+ }
+ } else {
+ if (is_Y_used) {
+ VP8LGetEntropyUnrefined(Y, length, &bit_entropy, &stats);
+ } else {
+ memset(&stats, 0, sizeof(stats));
+ stats.counts[0] = 1;
+ stats.streaks[0][length > 3] = length;
+ VP8LBitEntropyInit(&bit_entropy);
+ }
+ }
return BitsEntropyRefine(&bit_entropy) + FinalHuffmanCost(&stats);
}
}
// Estimates the Entropy + Huffman + other block overhead size cost.
-double VP8LHistogramEstimateBits(const VP8LHistogram* const p) {
+double VP8LHistogramEstimateBits(VP8LHistogram* const p) {
return
- PopulationCost(
- p->literal_, VP8LHistogramNumCodes(p->palette_code_bits_), NULL)
- + PopulationCost(p->red_, NUM_LITERAL_CODES, NULL)
- + PopulationCost(p->blue_, NUM_LITERAL_CODES, NULL)
- + PopulationCost(p->alpha_, NUM_LITERAL_CODES, NULL)
- + PopulationCost(p->distance_, NUM_DISTANCE_CODES, NULL)
+ PopulationCost(p->literal_, VP8LHistogramNumCodes(p->palette_code_bits_),
+ NULL, &p->is_used_[0])
+ + PopulationCost(p->red_, NUM_LITERAL_CODES, NULL, &p->is_used_[1])
+ + PopulationCost(p->blue_, NUM_LITERAL_CODES, NULL, &p->is_used_[2])
+ + PopulationCost(p->alpha_, NUM_LITERAL_CODES, NULL, &p->is_used_[3])
+ + PopulationCost(p->distance_, NUM_DISTANCE_CODES, NULL, &p->is_used_[4])
+ VP8LExtraCost(p->literal_ + NUM_LITERAL_CODES, NUM_LENGTH_CODES)
+ VP8LExtraCost(p->distance_, NUM_DISTANCE_CODES);
}
@@ -299,7 +364,8 @@ static int GetCombinedHistogramEntropy(const VP8LHistogram* const a,
int trivial_at_end = 0;
assert(a->palette_code_bits_ == b->palette_code_bits_);
*cost += GetCombinedEntropy(a->literal_, b->literal_,
- VP8LHistogramNumCodes(palette_code_bits), 0);
+ VP8LHistogramNumCodes(palette_code_bits),
+ a->is_used_[0], b->is_used_[0], 0);
*cost += VP8LExtraCostCombined(a->literal_ + NUM_LITERAL_CODES,
b->literal_ + NUM_LITERAL_CODES,
NUM_LENGTH_CODES);
@@ -319,19 +385,23 @@ static int GetCombinedHistogramEntropy(const VP8LHistogram* const a,
}
*cost +=
- GetCombinedEntropy(a->red_, b->red_, NUM_LITERAL_CODES, trivial_at_end);
+ GetCombinedEntropy(a->red_, b->red_, NUM_LITERAL_CODES, a->is_used_[1],
+ b->is_used_[1], trivial_at_end);
if (*cost > cost_threshold) return 0;
*cost +=
- GetCombinedEntropy(a->blue_, b->blue_, NUM_LITERAL_CODES, trivial_at_end);
+ GetCombinedEntropy(a->blue_, b->blue_, NUM_LITERAL_CODES, a->is_used_[2],
+ b->is_used_[2], trivial_at_end);
if (*cost > cost_threshold) return 0;
- *cost += GetCombinedEntropy(a->alpha_, b->alpha_, NUM_LITERAL_CODES,
- trivial_at_end);
+ *cost +=
+ GetCombinedEntropy(a->alpha_, b->alpha_, NUM_LITERAL_CODES,
+ a->is_used_[3], b->is_used_[3], trivial_at_end);
if (*cost > cost_threshold) return 0;
*cost +=
- GetCombinedEntropy(a->distance_, b->distance_, NUM_DISTANCE_CODES, 0);
+ GetCombinedEntropy(a->distance_, b->distance_, NUM_DISTANCE_CODES,
+ a->is_used_[4], b->is_used_[4], 0);
*cost +=
VP8LExtraCostCombined(a->distance_, b->distance_, NUM_DISTANCE_CODES);
if (*cost > cost_threshold) return 0;
@@ -419,16 +489,19 @@ static void UpdateDominantCostRange(
static void UpdateHistogramCost(VP8LHistogram* const h) {
uint32_t alpha_sym, red_sym, blue_sym;
const double alpha_cost =
- PopulationCost(h->alpha_, NUM_LITERAL_CODES, &alpha_sym);
+ PopulationCost(h->alpha_, NUM_LITERAL_CODES, &alpha_sym,
+ &h->is_used_[3]);
const double distance_cost =
- PopulationCost(h->distance_, NUM_DISTANCE_CODES, NULL) +
+ PopulationCost(h->distance_, NUM_DISTANCE_CODES, NULL, &h->is_used_[4]) +
VP8LExtraCost(h->distance_, NUM_DISTANCE_CODES);
const int num_codes = VP8LHistogramNumCodes(h->palette_code_bits_);
- h->literal_cost_ = PopulationCost(h->literal_, num_codes, NULL) +
- VP8LExtraCost(h->literal_ + NUM_LITERAL_CODES,
- NUM_LENGTH_CODES);
- h->red_cost_ = PopulationCost(h->red_, NUM_LITERAL_CODES, &red_sym);
- h->blue_cost_ = PopulationCost(h->blue_, NUM_LITERAL_CODES, &blue_sym);
+ h->literal_cost_ =
+ PopulationCost(h->literal_, num_codes, NULL, &h->is_used_[0]) +
+ VP8LExtraCost(h->literal_ + NUM_LITERAL_CODES, NUM_LENGTH_CODES);
+ h->red_cost_ =
+ PopulationCost(h->red_, NUM_LITERAL_CODES, &red_sym, &h->is_used_[1]);
+ h->blue_cost_ =
+ PopulationCost(h->blue_, NUM_LITERAL_CODES, &blue_sym, &h->is_used_[2]);
h->bit_cost_ = h->literal_cost_ + h->red_cost_ + h->blue_cost_ +
alpha_cost + distance_cost;
if ((alpha_sym | red_sym | blue_sym) == VP8L_NON_TRIVIAL_SYM) {
@@ -473,6 +546,7 @@ static void HistogramBuild(
VP8LHistogram** const histograms = image_histo->histograms;
VP8LRefsCursor c = VP8LRefsCursorInit(backward_refs);
assert(histo_bits > 0);
+ VP8LHistogramSetClear(image_histo);
while (VP8LRefsCursorOk(&c)) {
const PixOrCopy* const v = c.cur_pos;
const int ix = (y >> histo_bits) * histo_xsize + (x >> histo_bits);
@@ -493,11 +567,19 @@ static void HistogramCopyAndAnalyze(
const int histo_size = orig_histo->size;
VP8LHistogram** const orig_histograms = orig_histo->histograms;
VP8LHistogram** const histograms = image_histo->histograms;
+ image_histo->size = 0;
for (i = 0; i < histo_size; ++i) {
VP8LHistogram* const histo = orig_histograms[i];
UpdateHistogramCost(histo);
+
+ // Skip the histogram if it is completely empty, which can happen for tiles
+ // with no information (when they are skipped because of LZ77).
+ if (!histo->is_used_[0] && !histo->is_used_[1] && !histo->is_used_[2]
+ && !histo->is_used_[3] && !histo->is_used_[4]) {
+ continue;
+ }
// Copy histograms from orig_histo[] to image_histo[].
- HistogramCopy(histo, histograms[i]);
+ HistogramCopy(histo, histograms[image_histo->size++]);
}
}
@@ -674,6 +756,18 @@ static void HistoQueueUpdateHead(HistoQueue* const histo_queue,
}
}
+// Update the cost diff and combo of a pair of histograms. This needs to be
+// called when the the histograms have been merged with a third one.
+static void HistoQueueUpdatePair(const VP8LHistogram* const h1,
+ const VP8LHistogram* const h2,
+ double threshold,
+ HistogramPair* const pair) {
+ const double sum_cost = h1->bit_cost_ + h2->bit_cost_;
+ pair->cost_combo = 0.;
+ GetCombinedHistogramEntropy(h1, h2, sum_cost + threshold, &pair->cost_combo);
+ pair->cost_diff = pair->cost_combo - sum_cost;
+}
+
// Create a pair from indices "idx1" and "idx2" provided its cost
// is inferior to "threshold", a negative entropy.
// It returns the cost of the pair, or 0. if it superior to threshold.
@@ -683,7 +777,6 @@ static double HistoQueuePush(HistoQueue* const histo_queue,
const VP8LHistogram* h1;
const VP8LHistogram* h2;
HistogramPair pair;
- double sum_cost;
assert(threshold <= 0.);
if (idx1 > idx2) {
@@ -695,10 +788,8 @@ static double HistoQueuePush(HistoQueue* const histo_queue,
pair.idx2 = idx2;
h1 = histograms[idx1];
h2 = histograms[idx2];
- sum_cost = h1->bit_cost_ + h2->bit_cost_;
- pair.cost_combo = 0.;
- GetCombinedHistogramEntropy(h1, h2, sum_cost + threshold, &pair.cost_combo);
- pair.cost_diff = pair.cost_combo - sum_cost;
+
+ HistoQueueUpdatePair(h1, h2, threshold, &pair);
// Do not even consider the pair if it does not improve the entropy.
if (pair.cost_diff >= threshold) return 0.;
@@ -891,8 +982,7 @@ static int HistogramCombineStochastic(VP8LHistogramSet* const image_histo,
}
if (do_eval) {
// Re-evaluate the cost of an updated pair.
- GetCombinedHistogramEntropy(histograms[p->idx1], histograms[p->idx2], 0,
- &p->cost_diff);
+ HistoQueueUpdatePair(histograms[p->idx1], histograms[p->idx2], 0., p);
if (p->cost_diff >= 0.) {
HistoQueuePopPair(&histo_queue, p);
continue;
@@ -987,8 +1077,7 @@ int VP8LGetHistoImageSymbols(int xsize, int ysize,
// histograms of small sizes (as bin_map will be very sparse) and
// maximum quality q==100 (to preserve the compression gains at that level).
const int entropy_combine_num_bins = low_effort ? NUM_PARTITIONS : BIN_SIZE;
- const int entropy_combine =
- (orig_histo->size > entropy_combine_num_bins * 2) && (quality < 100);
+ int entropy_combine;
if (orig_histo == NULL) goto Error;
@@ -996,15 +1085,16 @@ int VP8LGetHistoImageSymbols(int xsize, int ysize,
HistogramBuild(xsize, histo_bits, refs, orig_histo);
// Copies the histograms and computes its bit_cost.
HistogramCopyAndAnalyze(orig_histo, image_histo);
-
+ entropy_combine =
+ (image_histo->size > entropy_combine_num_bins * 2) && (quality < 100);
if (entropy_combine) {
- const int bin_map_size = orig_histo->size;
+ const int bin_map_size = image_histo->size;
// Reuse histogram_symbols storage. By definition, it's guaranteed to be ok.
uint16_t* const bin_map = histogram_symbols;
const double combine_cost_factor =
GetCombineCostFactor(image_histo_raw_size, quality);
- HistogramAnalyzeEntropyBin(orig_histo, bin_map, low_effort);
+ HistogramAnalyzeEntropyBin(image_histo, bin_map, low_effort);
// Collapse histograms with similar entropy.
HistogramCombineEntropyBin(image_histo, tmp_histo, bin_map, bin_map_size,
entropy_combine_num_bins, combine_cost_factor,
diff --git a/thirdparty/libwebp/src/enc/histogram_enc.h b/thirdparty/libwebp/src/enc/histogram_enc.h
index e8c4c83f6f..54c2d21783 100644
--- a/thirdparty/libwebp/src/enc/histogram_enc.h
+++ b/thirdparty/libwebp/src/enc/histogram_enc.h
@@ -44,6 +44,7 @@ typedef struct {
double literal_cost_; // Cached values of dominant entropy costs:
double red_cost_; // literal, red & blue.
double blue_cost_;
+ uint8_t is_used_[5]; // 5 for literal, red, blue, alpha, distance
} VP8LHistogram;
// Collection of histograms with fixed capacity, allocated as one
@@ -67,7 +68,9 @@ void VP8LHistogramCreate(VP8LHistogram* const p,
int VP8LGetHistogramSize(int palette_code_bits);
// Set the palette_code_bits and reset the stats.
-void VP8LHistogramInit(VP8LHistogram* const p, int palette_code_bits);
+// If init_arrays is true, the arrays are also filled with 0's.
+void VP8LHistogramInit(VP8LHistogram* const p, int palette_code_bits,
+ int init_arrays);
// Collect all the references into a histogram (without reset)
void VP8LHistogramStoreRefs(const VP8LBackwardRefs* const refs,
@@ -83,6 +86,9 @@ void VP8LFreeHistogramSet(VP8LHistogramSet* const histo);
// using 'cache_bits'. Return NULL in case of memory error.
VP8LHistogramSet* VP8LAllocateHistogramSet(int size, int cache_bits);
+// Set the histograms in set to 0.
+void VP8LHistogramSetClear(VP8LHistogramSet* const set);
+
// Allocate and initialize histogram object with specified 'cache_bits'.
// Returns NULL in case of memory error.
// Special case of VP8LAllocateHistogramSet, with size equals 1.
@@ -113,7 +119,7 @@ double VP8LBitsEntropy(const uint32_t* const array, int n);
// Estimate how many bits the combined entropy of literals and distance
// approximately maps to.
-double VP8LHistogramEstimateBits(const VP8LHistogram* const p);
+double VP8LHistogramEstimateBits(VP8LHistogram* const p);
#ifdef __cplusplus
}
diff --git a/thirdparty/libwebp/src/enc/iterator_enc.c b/thirdparty/libwebp/src/enc/iterator_enc.c
index 7c47d51272..29f91d8315 100644
--- a/thirdparty/libwebp/src/enc/iterator_enc.c
+++ b/thirdparty/libwebp/src/enc/iterator_enc.c
@@ -128,7 +128,7 @@ static void ImportLine(const uint8_t* src, int src_stride,
for (; i < total_len; ++i) dst[i] = dst[len - 1];
}
-void VP8IteratorImport(VP8EncIterator* const it, uint8_t* tmp_32) {
+void VP8IteratorImport(VP8EncIterator* const it, uint8_t* const tmp_32) {
const VP8Encoder* const enc = it->enc_;
const int x = it->x_, y = it->y_;
const WebPPicture* const pic = enc->pic_;
diff --git a/thirdparty/libwebp/src/enc/picture_tools_enc.c b/thirdparty/libwebp/src/enc/picture_tools_enc.c
index be292d4391..d0e8a495da 100644
--- a/thirdparty/libwebp/src/enc/picture_tools_enc.c
+++ b/thirdparty/libwebp/src/enc/picture_tools_enc.c
@@ -16,10 +16,6 @@
#include "src/enc/vp8i_enc.h"
#include "src/dsp/yuv.h"
-static WEBP_INLINE uint32_t MakeARGB32(int r, int g, int b) {
- return (0xff000000u | (r << 16) | (g << 8) | b);
-}
-
//------------------------------------------------------------------------------
// Helper: clean up fully transparent area to help compressibility.
@@ -195,6 +191,10 @@ void WebPCleanupTransparentAreaLossless(WebPPicture* const pic) {
#define BLEND_10BIT(V0, V1, ALPHA) \
((((V0) * (1020 - (ALPHA)) + (V1) * (ALPHA)) * 0x101 + 1024) >> 18)
+static WEBP_INLINE uint32_t MakeARGB32(int r, int g, int b) {
+ return (0xff000000u | (r << 16) | (g << 8) | b);
+}
+
void WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb) {
const int red = (background_rgb >> 16) & 0xff;
const int green = (background_rgb >> 8) & 0xff;
@@ -208,39 +208,44 @@ void WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb) {
const int U0 = VP8RGBToU(4 * red, 4 * green, 4 * blue, 4 * YUV_HALF);
const int V0 = VP8RGBToV(4 * red, 4 * green, 4 * blue, 4 * YUV_HALF);
const int has_alpha = pic->colorspace & WEBP_CSP_ALPHA_BIT;
- if (!has_alpha || pic->a == NULL) return; // nothing to do
+ uint8_t* y_ptr = pic->y;
+ uint8_t* u_ptr = pic->u;
+ uint8_t* v_ptr = pic->v;
+ uint8_t* a_ptr = pic->a;
+ if (!has_alpha || a_ptr == NULL) return; // nothing to do
for (y = 0; y < pic->height; ++y) {
// Luma blending
- uint8_t* const y_ptr = pic->y + y * pic->y_stride;
- uint8_t* const a_ptr = pic->a + y * pic->a_stride;
for (x = 0; x < pic->width; ++x) {
- const int alpha = a_ptr[x];
+ const uint8_t alpha = a_ptr[x];
if (alpha < 0xff) {
- y_ptr[x] = BLEND(Y0, y_ptr[x], a_ptr[x]);
+ y_ptr[x] = BLEND(Y0, y_ptr[x], alpha);
}
}
// Chroma blending every even line
if ((y & 1) == 0) {
- uint8_t* const u = pic->u + (y >> 1) * pic->uv_stride;
- uint8_t* const v = pic->v + (y >> 1) * pic->uv_stride;
uint8_t* const a_ptr2 =
(y + 1 == pic->height) ? a_ptr : a_ptr + pic->a_stride;
for (x = 0; x < uv_width; ++x) {
// Average four alpha values into a single blending weight.
// TODO(skal): might lead to visible contouring. Can we do better?
- const int alpha =
+ const uint32_t alpha =
a_ptr[2 * x + 0] + a_ptr[2 * x + 1] +
a_ptr2[2 * x + 0] + a_ptr2[2 * x + 1];
- u[x] = BLEND_10BIT(U0, u[x], alpha);
- v[x] = BLEND_10BIT(V0, v[x], alpha);
+ u_ptr[x] = BLEND_10BIT(U0, u_ptr[x], alpha);
+ v_ptr[x] = BLEND_10BIT(V0, v_ptr[x], alpha);
}
if (pic->width & 1) { // rightmost pixel
- const int alpha = 2 * (a_ptr[2 * x + 0] + a_ptr2[2 * x + 0]);
- u[x] = BLEND_10BIT(U0, u[x], alpha);
- v[x] = BLEND_10BIT(V0, v[x], alpha);
+ const uint32_t alpha = 2 * (a_ptr[2 * x + 0] + a_ptr2[2 * x + 0]);
+ u_ptr[x] = BLEND_10BIT(U0, u_ptr[x], alpha);
+ v_ptr[x] = BLEND_10BIT(V0, v_ptr[x], alpha);
}
+ } else {
+ u_ptr += pic->uv_stride;
+ v_ptr += pic->uv_stride;
}
- memset(a_ptr, 0xff, pic->width);
+ memset(a_ptr, 0xff, pic->width); // reset alpha value to opaque
+ a_ptr += pic->a_stride;
+ y_ptr += pic->y_stride;
}
} else {
uint32_t* argb = pic->argb;
diff --git a/thirdparty/libwebp/src/enc/vp8i_enc.h b/thirdparty/libwebp/src/enc/vp8i_enc.h
index 624e8f8e66..92439febb8 100644
--- a/thirdparty/libwebp/src/enc/vp8i_enc.h
+++ b/thirdparty/libwebp/src/enc/vp8i_enc.h
@@ -32,7 +32,7 @@ extern "C" {
// version numbers
#define ENC_MAJ_VERSION 1
#define ENC_MIN_VERSION 0
-#define ENC_REV_VERSION 0
+#define ENC_REV_VERSION 1
enum { MAX_LF_LEVELS = 64, // Maximum loop filter level
MAX_VARIABLE_LEVEL = 67, // last (inclusive) level with variable cost
@@ -278,7 +278,7 @@ int VP8IteratorIsDone(const VP8EncIterator* const it);
// Import uncompressed samples from source.
// If tmp_32 is not NULL, import boundary samples too.
// tmp_32 is a 32-bytes scratch buffer that must be aligned in memory.
-void VP8IteratorImport(VP8EncIterator* const it, uint8_t* tmp_32);
+void VP8IteratorImport(VP8EncIterator* const it, uint8_t* const tmp_32);
// export decimated samples
void VP8IteratorExport(const VP8EncIterator* const it);
// go to next macroblock. Returns false if not finished.
@@ -515,4 +515,4 @@ void WebPCleanupTransparentAreaLossless(WebPPicture* const pic);
} // extern "C"
#endif
-#endif /* WEBP_ENC_VP8I_ENC_H_ */
+#endif // WEBP_ENC_VP8I_ENC_H_
diff --git a/thirdparty/libwebp/src/enc/vp8l_enc.c b/thirdparty/libwebp/src/enc/vp8l_enc.c
index a89184eb08..2713edcd95 100644
--- a/thirdparty/libwebp/src/enc/vp8l_enc.c
+++ b/thirdparty/libwebp/src/enc/vp8l_enc.c
@@ -809,6 +809,7 @@ static WebPEncodingError EncodeImageNoHuffman(VP8LBitWriter* const bw,
err = VP8_ENC_ERROR_OUT_OF_MEMORY;
goto Error;
}
+ VP8LHistogramSetClear(histogram_image);
// Build histogram image and symbols from backward references.
VP8LHistogramStoreRefs(refs, histogram_image->histograms[0]);
@@ -1248,14 +1249,20 @@ static WebPEncodingError MakeInputImageCopy(VP8LEncoder* const enc) {
const WebPPicture* const picture = enc->pic_;
const int width = picture->width;
const int height = picture->height;
- int y;
+
err = AllocateTransformBuffer(enc, width, height);
if (err != VP8_ENC_OK) return err;
if (enc->argb_content_ == kEncoderARGB) return VP8_ENC_OK;
- for (y = 0; y < height; ++y) {
- memcpy(enc->argb_ + y * width,
- picture->argb + y * picture->argb_stride,
- width * sizeof(*enc->argb_));
+
+ {
+ uint32_t* dst = enc->argb_;
+ const uint32_t* src = picture->argb;
+ int y;
+ for (y = 0; y < height; ++y) {
+ memcpy(dst, src, width * sizeof(*dst));
+ dst += width;
+ src += picture->argb_stride;
+ }
}
enc->argb_content_ = kEncoderARGB;
assert(enc->current_width_ == width);
diff --git a/thirdparty/libwebp/src/enc/vp8li_enc.h b/thirdparty/libwebp/src/enc/vp8li_enc.h
index 298a4a0014..d2d0fc509c 100644
--- a/thirdparty/libwebp/src/enc/vp8li_enc.h
+++ b/thirdparty/libwebp/src/enc/vp8li_enc.h
@@ -115,4 +115,4 @@ void VP8LColorSpaceTransform(int width, int height, int bits, int quality,
} // extern "C"
#endif
-#endif /* WEBP_ENC_VP8LI_ENC_H_ */
+#endif // WEBP_ENC_VP8LI_ENC_H_
diff --git a/thirdparty/libwebp/src/mux/animi.h b/thirdparty/libwebp/src/mux/animi.h
index 88899532aa..34c45ba4da 100644
--- a/thirdparty/libwebp/src/mux/animi.h
+++ b/thirdparty/libwebp/src/mux/animi.h
@@ -40,4 +40,4 @@ int WebPAnimEncoderRefineRect(
} // extern "C"
#endif
-#endif /* WEBP_MUX_ANIMI_H_ */
+#endif // WEBP_MUX_ANIMI_H_
diff --git a/thirdparty/libwebp/src/mux/muxedit.c b/thirdparty/libwebp/src/mux/muxedit.c
index 7a027b3cb4..ccf14b2a0c 100644
--- a/thirdparty/libwebp/src/mux/muxedit.c
+++ b/thirdparty/libwebp/src/mux/muxedit.c
@@ -69,12 +69,12 @@ void WebPMuxDelete(WebPMux* mux) {
if (idx == (INDEX)) { \
err = ChunkAssignData(&chunk, data, copy_data, tag); \
if (err == WEBP_MUX_OK) { \
- err = ChunkSetNth(&chunk, (LIST), nth); \
+ err = ChunkSetHead(&chunk, (LIST)); \
} \
return err; \
}
-static WebPMuxError MuxSet(WebPMux* const mux, uint32_t tag, uint32_t nth,
+static WebPMuxError MuxSet(WebPMux* const mux, uint32_t tag,
const WebPData* const data, int copy_data) {
WebPChunk chunk;
WebPMuxError err = WEBP_MUX_NOT_FOUND;
@@ -190,7 +190,7 @@ WebPMuxError WebPMuxSetChunk(WebPMux* mux, const char fourcc[4],
if (err != WEBP_MUX_OK && err != WEBP_MUX_NOT_FOUND) return err;
// Add the given chunk.
- return MuxSet(mux, tag, 1, chunk_data, copy_data);
+ return MuxSet(mux, tag, chunk_data, copy_data);
}
// Creates a chunk from given 'data' and sets it as 1st chunk in 'chunk_list'.
@@ -202,7 +202,7 @@ static WebPMuxError AddDataToChunkList(
ChunkInit(&chunk);
err = ChunkAssignData(&chunk, data, copy_data, tag);
if (err != WEBP_MUX_OK) goto Err;
- err = ChunkSetNth(&chunk, chunk_list, 1);
+ err = ChunkSetHead(&chunk, chunk_list);
if (err != WEBP_MUX_OK) goto Err;
return WEBP_MUX_OK;
Err:
@@ -266,14 +266,14 @@ WebPMuxError WebPMuxPushFrame(WebPMux* mux, const WebPMuxFrameInfo* info,
int copy_data) {
WebPMuxImage wpi;
WebPMuxError err;
- const WebPData* const bitstream = &info->bitstream;
// Sanity checks.
if (mux == NULL || info == NULL) return WEBP_MUX_INVALID_ARGUMENT;
if (info->id != WEBP_CHUNK_ANMF) return WEBP_MUX_INVALID_ARGUMENT;
- if (bitstream->bytes == NULL || bitstream->size > MAX_CHUNK_PAYLOAD) {
+ if (info->bitstream.bytes == NULL ||
+ info->bitstream.size > MAX_CHUNK_PAYLOAD) {
return WEBP_MUX_INVALID_ARGUMENT;
}
@@ -287,7 +287,7 @@ WebPMuxError WebPMuxPushFrame(WebPMux* mux, const WebPMuxFrameInfo* info,
}
MuxImageInit(&wpi);
- err = SetAlphaAndImageChunks(bitstream, copy_data, &wpi);
+ err = SetAlphaAndImageChunks(&info->bitstream, copy_data, &wpi);
if (err != WEBP_MUX_OK) goto Err;
assert(wpi.img_ != NULL); // As SetAlphaAndImageChunks() was successful.
@@ -342,7 +342,7 @@ WebPMuxError WebPMuxSetAnimationParams(WebPMux* mux,
// Set the animation parameters.
PutLE32(data, params->bgcolor);
PutLE16(data + 4, params->loop_count);
- return MuxSet(mux, kChunks[IDX_ANIM].tag, 1, &anim, 1);
+ return MuxSet(mux, kChunks[IDX_ANIM].tag, &anim, 1);
}
WebPMuxError WebPMuxSetCanvasSize(WebPMux* mux,
@@ -540,7 +540,7 @@ static WebPMuxError CreateVP8XChunk(WebPMux* const mux) {
PutLE24(data + 4, width - 1); // canvas width.
PutLE24(data + 7, height - 1); // canvas height.
- return MuxSet(mux, kChunks[IDX_VP8X].tag, 1, &vp8x, 1);
+ return MuxSet(mux, kChunks[IDX_VP8X].tag, &vp8x, 1);
}
// Cleans up 'mux' by removing any unnecessary chunks.
diff --git a/thirdparty/libwebp/src/mux/muxi.h b/thirdparty/libwebp/src/mux/muxi.h
index 6b57eea30f..df9f74c63c 100644
--- a/thirdparty/libwebp/src/mux/muxi.h
+++ b/thirdparty/libwebp/src/mux/muxi.h
@@ -14,6 +14,7 @@
#ifndef WEBP_MUX_MUXI_H_
#define WEBP_MUX_MUXI_H_
+#include <assert.h>
#include <stdlib.h>
#include "src/dec/vp8i_dec.h"
#include "src/dec/vp8li_dec.h"
@@ -28,7 +29,7 @@ extern "C" {
#define MUX_MAJ_VERSION 1
#define MUX_MIN_VERSION 0
-#define MUX_REV_VERSION 0
+#define MUX_REV_VERSION 1
// Chunk object.
typedef struct WebPChunk WebPChunk;
@@ -126,11 +127,14 @@ WebPChunk* ChunkSearchList(WebPChunk* first, uint32_t nth, uint32_t tag);
WebPMuxError ChunkAssignData(WebPChunk* chunk, const WebPData* const data,
int copy_data, uint32_t tag);
-// Sets 'chunk' at nth position in the 'chunk_list'.
-// nth = 0 has the special meaning "last of the list".
+// Sets 'chunk' as the only element in 'chunk_list' if it is empty.
// On success ownership is transferred from 'chunk' to the 'chunk_list'.
-WebPMuxError ChunkSetNth(WebPChunk* chunk, WebPChunk** chunk_list,
- uint32_t nth);
+WebPMuxError ChunkSetHead(WebPChunk* const chunk, WebPChunk** const chunk_list);
+// Sets 'chunk' at last position in the 'chunk_list'.
+// On success ownership is transferred from 'chunk' to the 'chunk_list'.
+// *chunk_list also points towards the last valid element of the initial
+// *chunk_list.
+WebPMuxError ChunkAppend(WebPChunk* const chunk, WebPChunk*** const chunk_list);
// Releases chunk and returns chunk->next_.
WebPChunk* ChunkRelease(WebPChunk* const chunk);
@@ -143,13 +147,13 @@ void ChunkListDelete(WebPChunk** const chunk_list);
// Returns size of the chunk including chunk header and padding byte (if any).
static WEBP_INLINE size_t SizeWithPadding(size_t chunk_size) {
+ assert(chunk_size <= MAX_CHUNK_PAYLOAD);
return CHUNK_HEADER_SIZE + ((chunk_size + 1) & ~1U);
}
// Size of a chunk including header and padding.
static WEBP_INLINE size_t ChunkDiskSize(const WebPChunk* chunk) {
const size_t data_size = chunk->data_.size;
- assert(data_size < MAX_CHUNK_PAYLOAD);
return SizeWithPadding(data_size);
}
@@ -227,4 +231,4 @@ WebPMuxError MuxValidate(const WebPMux* const mux);
} // extern "C"
#endif
-#endif /* WEBP_MUX_MUXI_H_ */
+#endif // WEBP_MUX_MUXI_H_
diff --git a/thirdparty/libwebp/src/mux/muxinternal.c b/thirdparty/libwebp/src/mux/muxinternal.c
index 1473f100e5..b9ee6717d3 100644
--- a/thirdparty/libwebp/src/mux/muxinternal.c
+++ b/thirdparty/libwebp/src/mux/muxinternal.c
@@ -111,27 +111,6 @@ WebPChunk* ChunkSearchList(WebPChunk* first, uint32_t nth, uint32_t tag) {
return ((nth > 0) && (iter > 0)) ? NULL : first;
}
-// Outputs a pointer to 'prev_chunk->next_',
-// where 'prev_chunk' is the pointer to the chunk at position (nth - 1).
-// Returns true if nth chunk was found.
-static int ChunkSearchListToSet(WebPChunk** chunk_list, uint32_t nth,
- WebPChunk*** const location) {
- uint32_t count = 0;
- assert(chunk_list != NULL);
- *location = chunk_list;
-
- while (*chunk_list != NULL) {
- WebPChunk* const cur_chunk = *chunk_list;
- ++count;
- if (count == nth) return 1; // Found.
- chunk_list = &cur_chunk->next_;
- *location = chunk_list;
- }
-
- // *chunk_list is ok to be NULL if adding at last location.
- return (nth == 0 || (count == nth - 1)) ? 1 : 0;
-}
-
//------------------------------------------------------------------------------
// Chunk writer methods.
@@ -156,11 +135,12 @@ WebPMuxError ChunkAssignData(WebPChunk* chunk, const WebPData* const data,
return WEBP_MUX_OK;
}
-WebPMuxError ChunkSetNth(WebPChunk* chunk, WebPChunk** chunk_list,
- uint32_t nth) {
+WebPMuxError ChunkSetHead(WebPChunk* const chunk,
+ WebPChunk** const chunk_list) {
WebPChunk* new_chunk;
- if (!ChunkSearchListToSet(chunk_list, nth, &chunk_list)) {
+ assert(chunk_list != NULL);
+ if (*chunk_list != NULL) {
return WEBP_MUX_NOT_FOUND;
}
@@ -168,11 +148,26 @@ WebPMuxError ChunkSetNth(WebPChunk* chunk, WebPChunk** chunk_list,
if (new_chunk == NULL) return WEBP_MUX_MEMORY_ERROR;
*new_chunk = *chunk;
chunk->owner_ = 0;
- new_chunk->next_ = *chunk_list;
+ new_chunk->next_ = NULL;
*chunk_list = new_chunk;
return WEBP_MUX_OK;
}
+WebPMuxError ChunkAppend(WebPChunk* const chunk,
+ WebPChunk*** const chunk_list) {
+ assert(chunk_list != NULL && *chunk_list != NULL);
+
+ if (**chunk_list == NULL) {
+ ChunkSetHead(chunk, *chunk_list);
+ } else {
+ WebPChunk* last_chunk = **chunk_list;
+ while (last_chunk->next_ != NULL) last_chunk = last_chunk->next_;
+ ChunkSetHead(chunk, &last_chunk->next_);
+ *chunk_list = &last_chunk->next_;
+ }
+ return WEBP_MUX_OK;
+}
+
//------------------------------------------------------------------------------
// Chunk deletion method(s).
@@ -232,9 +227,11 @@ void MuxImageInit(WebPMuxImage* const wpi) {
WebPMuxImage* MuxImageRelease(WebPMuxImage* const wpi) {
WebPMuxImage* next;
if (wpi == NULL) return NULL;
- ChunkDelete(wpi->header_);
- ChunkDelete(wpi->alpha_);
- ChunkDelete(wpi->img_);
+ // There should be at most one chunk of header_, alpha_, img_ but we call
+ // ChunkListDelete to be safe
+ ChunkListDelete(&wpi->header_);
+ ChunkListDelete(&wpi->alpha_);
+ ChunkListDelete(&wpi->img_);
ChunkListDelete(&wpi->unknown_);
next = wpi->next_;
diff --git a/thirdparty/libwebp/src/mux/muxread.c b/thirdparty/libwebp/src/mux/muxread.c
index 0b55286862..268f6acb53 100644
--- a/thirdparty/libwebp/src/mux/muxread.c
+++ b/thirdparty/libwebp/src/mux/muxread.c
@@ -59,6 +59,7 @@ static WebPMuxError ChunkVerifyAndAssign(WebPChunk* chunk,
// Sanity checks.
if (data_size < CHUNK_HEADER_SIZE) return WEBP_MUX_NOT_ENOUGH_DATA;
chunk_size = GetLE32(data + TAG_SIZE);
+ if (chunk_size > MAX_CHUNK_PAYLOAD) return WEBP_MUX_BAD_DATA;
{
const size_t chunk_disk_size = SizeWithPadding(chunk_size);
@@ -102,6 +103,7 @@ static int MuxImageParse(const WebPChunk* const chunk, int copy_data,
const uint8_t* const last = bytes + size;
WebPChunk subchunk;
size_t subchunk_size;
+ WebPChunk** unknown_chunk_list = &wpi->unknown_;
ChunkInit(&subchunk);
assert(chunk->tag_ == kChunks[IDX_ANMF].tag);
@@ -116,7 +118,7 @@ static int MuxImageParse(const WebPChunk* const chunk, int copy_data,
if (size < hdr_size) goto Fail;
ChunkAssignData(&subchunk, &temp, copy_data, chunk->tag_);
}
- ChunkSetNth(&subchunk, &wpi->header_, 1);
+ ChunkSetHead(&subchunk, &wpi->header_);
wpi->is_partial_ = 1; // Waiting for ALPH and/or VP8/VP8L chunks.
// Rest of the chunks.
@@ -133,18 +135,23 @@ static int MuxImageParse(const WebPChunk* const chunk, int copy_data,
switch (ChunkGetIdFromTag(subchunk.tag_)) {
case WEBP_CHUNK_ALPHA:
if (wpi->alpha_ != NULL) goto Fail; // Consecutive ALPH chunks.
- if (ChunkSetNth(&subchunk, &wpi->alpha_, 1) != WEBP_MUX_OK) goto Fail;
+ if (ChunkSetHead(&subchunk, &wpi->alpha_) != WEBP_MUX_OK) goto Fail;
wpi->is_partial_ = 1; // Waiting for a VP8 chunk.
break;
case WEBP_CHUNK_IMAGE:
- if (ChunkSetNth(&subchunk, &wpi->img_, 1) != WEBP_MUX_OK) goto Fail;
+ if (wpi->img_ != NULL) goto Fail; // Only 1 image chunk allowed.
+ if (ChunkSetHead(&subchunk, &wpi->img_) != WEBP_MUX_OK) goto Fail;
if (!MuxImageFinalize(wpi)) goto Fail;
wpi->is_partial_ = 0; // wpi is completely filled.
break;
case WEBP_CHUNK_UNKNOWN:
- if (wpi->is_partial_) goto Fail; // Encountered an unknown chunk
- // before some image chunks.
- if (ChunkSetNth(&subchunk, &wpi->unknown_, 0) != WEBP_MUX_OK) goto Fail;
+ if (wpi->is_partial_) {
+ goto Fail; // Encountered an unknown chunk
+ // before some image chunks.
+ }
+ if (ChunkAppend(&subchunk, &unknown_chunk_list) != WEBP_MUX_OK) {
+ goto Fail;
+ }
break;
default:
goto Fail;
@@ -175,6 +182,9 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
const uint8_t* data;
size_t size;
WebPChunk chunk;
+ // Stores the end of the chunk lists so that it is faster to append data to
+ // their ends.
+ WebPChunk** chunk_list_ends[WEBP_CHUNK_NIL + 1] = { NULL };
ChunkInit(&chunk);
// Sanity checks.
@@ -187,7 +197,7 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
size = bitstream->size;
if (data == NULL) return NULL;
- if (size < RIFF_HEADER_SIZE) return NULL;
+ if (size < RIFF_HEADER_SIZE + CHUNK_HEADER_SIZE) return NULL;
if (GetLE32(data + 0) != MKFOURCC('R', 'I', 'F', 'F') ||
GetLE32(data + CHUNK_HEADER_SIZE) != MKFOURCC('W', 'E', 'B', 'P')) {
return NULL;
@@ -196,8 +206,6 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
mux = WebPMuxNew();
if (mux == NULL) return NULL;
- if (size < RIFF_HEADER_SIZE + TAG_SIZE) goto Err;
-
tag = GetLE32(data + RIFF_HEADER_SIZE);
if (tag != kChunks[IDX_VP8].tag &&
tag != kChunks[IDX_VP8L].tag &&
@@ -205,13 +213,17 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
goto Err; // First chunk should be VP8, VP8L or VP8X.
}
- riff_size = SizeWithPadding(GetLE32(data + TAG_SIZE));
- if (riff_size > MAX_CHUNK_PAYLOAD || riff_size > size) {
- goto Err;
- } else {
- if (riff_size < size) { // Redundant data after last chunk.
- size = riff_size; // To make sure we don't read any data beyond mux_size.
- }
+ riff_size = GetLE32(data + TAG_SIZE);
+ if (riff_size > MAX_CHUNK_PAYLOAD) goto Err;
+
+ // Note this padding is historical and differs from demux.c which does not
+ // pad the file size.
+ riff_size = SizeWithPadding(riff_size);
+ if (riff_size < CHUNK_HEADER_SIZE) goto Err;
+ if (riff_size > size) goto Err;
+ // There's no point in reading past the end of the RIFF chunk.
+ if (size > riff_size + CHUNK_HEADER_SIZE) {
+ size = riff_size + CHUNK_HEADER_SIZE;
}
end = data + size;
@@ -226,7 +238,6 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
while (data != end) {
size_t data_size;
WebPChunkId id;
- WebPChunk** chunk_list;
if (ChunkVerifyAndAssign(&chunk, data, size, riff_size,
copy_data) != WEBP_MUX_OK) {
goto Err;
@@ -236,11 +247,11 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
switch (id) {
case WEBP_CHUNK_ALPHA:
if (wpi->alpha_ != NULL) goto Err; // Consecutive ALPH chunks.
- if (ChunkSetNth(&chunk, &wpi->alpha_, 1) != WEBP_MUX_OK) goto Err;
+ if (ChunkSetHead(&chunk, &wpi->alpha_) != WEBP_MUX_OK) goto Err;
wpi->is_partial_ = 1; // Waiting for a VP8 chunk.
break;
case WEBP_CHUNK_IMAGE:
- if (ChunkSetNth(&chunk, &wpi->img_, 1) != WEBP_MUX_OK) goto Err;
+ if (ChunkSetHead(&chunk, &wpi->img_) != WEBP_MUX_OK) goto Err;
if (!MuxImageFinalize(wpi)) goto Err;
wpi->is_partial_ = 0; // wpi is completely filled.
PushImage:
@@ -257,9 +268,13 @@ WebPMux* WebPMuxCreateInternal(const WebPData* bitstream, int copy_data,
default: // A non-image chunk.
if (wpi->is_partial_) goto Err; // Encountered a non-image chunk before
// getting all chunks of an image.
- chunk_list = MuxGetChunkListFromId(mux, id); // List to add this chunk.
- if (ChunkSetNth(&chunk, chunk_list, 0) != WEBP_MUX_OK) goto Err;
+ if (chunk_list_ends[id] == NULL) {
+ chunk_list_ends[id] =
+ MuxGetChunkListFromId(mux, id); // List to add this chunk.
+ }
+ if (ChunkAppend(&chunk, &chunk_list_ends[id]) != WEBP_MUX_OK) goto Err;
if (id == WEBP_CHUNK_VP8X) { // grab global specs
+ if (data_size < CHUNK_HEADER_SIZE + VP8X_CHUNK_SIZE) goto Err;
mux->canvas_width_ = GetLE24(data + 12) + 1;
mux->canvas_height_ = GetLE24(data + 15) + 1;
}
@@ -385,6 +400,10 @@ static WebPMuxError SynthesizeBitstream(const WebPMuxImage* const wpi,
uint8_t* const data = (uint8_t*)WebPSafeMalloc(1ULL, size);
if (data == NULL) return WEBP_MUX_MEMORY_ERROR;
+ // There should be at most one alpha_ chunk and exactly one img_ chunk.
+ assert(wpi->alpha_ == NULL || wpi->alpha_->next_ == NULL);
+ assert(wpi->img_ != NULL && wpi->img_->next_ == NULL);
+
// Main RIFF header.
dst = MuxEmitRiffHeader(data, size);
diff --git a/thirdparty/libwebp/src/utils/bit_reader_inl_utils.h b/thirdparty/libwebp/src/utils/bit_reader_inl_utils.h
index 2ccc6ed326..7e607f370a 100644
--- a/thirdparty/libwebp/src/utils/bit_reader_inl_utils.h
+++ b/thirdparty/libwebp/src/utils/bit_reader_inl_utils.h
@@ -187,4 +187,4 @@ static WEBP_INLINE int VP8GetBitAlt(VP8BitReader* const br, int prob) {
} // extern "C"
#endif
-#endif // WEBP_UTILS_BIT_READER_INL_UTILS_H_
+#endif // WEBP_UTILS_BIT_READER_INL_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/bit_reader_utils.h b/thirdparty/libwebp/src/utils/bit_reader_utils.h
index 04f9804409..de810d402a 100644
--- a/thirdparty/libwebp/src/utils/bit_reader_utils.h
+++ b/thirdparty/libwebp/src/utils/bit_reader_utils.h
@@ -182,4 +182,4 @@ static WEBP_INLINE void VP8LFillBitWindow(VP8LBitReader* const br) {
} // extern "C"
#endif
-#endif /* WEBP_UTILS_BIT_READER_UTILS_H_ */
+#endif // WEBP_UTILS_BIT_READER_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/bit_writer_utils.h b/thirdparty/libwebp/src/utils/bit_writer_utils.h
index 2cf5976fe3..b9d5102a5a 100644
--- a/thirdparty/libwebp/src/utils/bit_writer_utils.h
+++ b/thirdparty/libwebp/src/utils/bit_writer_utils.h
@@ -151,4 +151,4 @@ static WEBP_INLINE void VP8LPutBits(VP8LBitWriter* const bw,
} // extern "C"
#endif
-#endif /* WEBP_UTILS_BIT_WRITER_UTILS_H_ */
+#endif // WEBP_UTILS_BIT_WRITER_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/filters_utils.h b/thirdparty/libwebp/src/utils/filters_utils.h
index 410f2fcdf2..61da66e212 100644
--- a/thirdparty/libwebp/src/utils/filters_utils.h
+++ b/thirdparty/libwebp/src/utils/filters_utils.h
@@ -29,4 +29,4 @@ WEBP_FILTER_TYPE WebPEstimateBestFilter(const uint8_t* data,
} // extern "C"
#endif
-#endif /* WEBP_UTILS_FILTERS_UTILS_H_ */
+#endif // WEBP_UTILS_FILTERS_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/quant_levels_dec_utils.c b/thirdparty/libwebp/src/utils/quant_levels_dec_utils.c
index 3818a78b93..f65b6cdbb6 100644
--- a/thirdparty/libwebp/src/utils/quant_levels_dec_utils.c
+++ b/thirdparty/libwebp/src/utils/quant_levels_dec_utils.c
@@ -261,9 +261,15 @@ static void CleanupParams(SmoothParams* const p) {
int WebPDequantizeLevels(uint8_t* const data, int width, int height, int stride,
int strength) {
- const int radius = 4 * strength / 100;
+ int radius = 4 * strength / 100;
+
if (strength < 0 || strength > 100) return 0;
if (data == NULL || width <= 0 || height <= 0) return 0; // bad params
+
+ // limit the filter size to not exceed the image dimensions
+ if (2 * radius + 1 > width) radius = (width - 1) >> 1;
+ if (2 * radius + 1 > height) radius = (height - 1) >> 1;
+
if (radius > 0) {
SmoothParams p;
memset(&p, 0, sizeof(p));
diff --git a/thirdparty/libwebp/src/utils/quant_levels_dec_utils.h b/thirdparty/libwebp/src/utils/quant_levels_dec_utils.h
index f822107a72..327f19f336 100644
--- a/thirdparty/libwebp/src/utils/quant_levels_dec_utils.h
+++ b/thirdparty/libwebp/src/utils/quant_levels_dec_utils.h
@@ -32,4 +32,4 @@ int WebPDequantizeLevels(uint8_t* const data, int width, int height, int stride,
} // extern "C"
#endif
-#endif /* WEBP_UTILS_QUANT_LEVELS_DEC_UTILS_H_ */
+#endif // WEBP_UTILS_QUANT_LEVELS_DEC_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/quant_levels_utils.h b/thirdparty/libwebp/src/utils/quant_levels_utils.h
index 75df2ba6a4..9ee3ea0075 100644
--- a/thirdparty/libwebp/src/utils/quant_levels_utils.h
+++ b/thirdparty/libwebp/src/utils/quant_levels_utils.h
@@ -33,4 +33,4 @@ int QuantizeLevels(uint8_t* const data, int width, int height, int num_levels,
} // extern "C"
#endif
-#endif /* WEBP_UTILS_QUANT_LEVELS_UTILS_H_ */
+#endif // WEBP_UTILS_QUANT_LEVELS_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/random_utils.h b/thirdparty/libwebp/src/utils/random_utils.h
index 6d36c667e7..a5006f84f7 100644
--- a/thirdparty/libwebp/src/utils/random_utils.h
+++ b/thirdparty/libwebp/src/utils/random_utils.h
@@ -60,4 +60,4 @@ static WEBP_INLINE int VP8RandomBits(VP8Random* const rg, int num_bits) {
} // extern "C"
#endif
-#endif /* WEBP_UTILS_RANDOM_UTILS_H_ */
+#endif // WEBP_UTILS_RANDOM_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/rescaler_utils.h b/thirdparty/libwebp/src/utils/rescaler_utils.h
index 8890e6fa13..ca41e42c4a 100644
--- a/thirdparty/libwebp/src/utils/rescaler_utils.h
+++ b/thirdparty/libwebp/src/utils/rescaler_utils.h
@@ -98,4 +98,4 @@ int WebPRescalerHasPendingOutput(const WebPRescaler* const rescaler) {
} // extern "C"
#endif
-#endif /* WEBP_UTILS_RESCALER_UTILS_H_ */
+#endif // WEBP_UTILS_RESCALER_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/thread_utils.h b/thirdparty/libwebp/src/utils/thread_utils.h
index c8ae6c9033..29ad49f74b 100644
--- a/thirdparty/libwebp/src/utils/thread_utils.h
+++ b/thirdparty/libwebp/src/utils/thread_utils.h
@@ -87,4 +87,4 @@ WEBP_EXTERN const WebPWorkerInterface* WebPGetWorkerInterface(void);
} // extern "C"
#endif
-#endif /* WEBP_UTILS_THREAD_UTILS_H_ */
+#endif // WEBP_UTILS_THREAD_UTILS_H_
diff --git a/thirdparty/libwebp/src/utils/utils.h b/thirdparty/libwebp/src/utils/utils.h
index 52921bf24e..da97b5d38f 100644
--- a/thirdparty/libwebp/src/utils/utils.h
+++ b/thirdparty/libwebp/src/utils/utils.h
@@ -175,4 +175,4 @@ WEBP_EXTERN int WebPGetColorPalette(const struct WebPPicture* const pic,
} // extern "C"
#endif
-#endif /* WEBP_UTILS_UTILS_H_ */
+#endif // WEBP_UTILS_UTILS_H_
diff --git a/thirdparty/libwebp/src/webp/decode.h b/thirdparty/libwebp/src/webp/decode.h
index 2165e96c95..95d31e7619 100644
--- a/thirdparty/libwebp/src/webp/decode.h
+++ b/thirdparty/libwebp/src/webp/decode.h
@@ -491,4 +491,4 @@ WEBP_EXTERN VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size,
} // extern "C"
#endif
-#endif /* WEBP_WEBP_DECODE_H_ */
+#endif // WEBP_WEBP_DECODE_H_
diff --git a/thirdparty/libwebp/src/webp/demux.h b/thirdparty/libwebp/src/webp/demux.h
index 555d641338..846eeb15a9 100644
--- a/thirdparty/libwebp/src/webp/demux.h
+++ b/thirdparty/libwebp/src/webp/demux.h
@@ -360,4 +360,4 @@ WEBP_EXTERN void WebPAnimDecoderDelete(WebPAnimDecoder* dec);
} // extern "C"
#endif
-#endif /* WEBP_WEBP_DEMUX_H_ */
+#endif // WEBP_WEBP_DEMUX_H_
diff --git a/thirdparty/libwebp/src/webp/encode.h b/thirdparty/libwebp/src/webp/encode.h
index 7ec3543dc2..549cf07730 100644
--- a/thirdparty/libwebp/src/webp/encode.h
+++ b/thirdparty/libwebp/src/webp/encode.h
@@ -542,4 +542,4 @@ WEBP_EXTERN int WebPEncode(const WebPConfig* config, WebPPicture* picture);
} // extern "C"
#endif
-#endif /* WEBP_WEBP_ENCODE_H_ */
+#endif // WEBP_WEBP_ENCODE_H_
diff --git a/thirdparty/libwebp/src/webp/format_constants.h b/thirdparty/libwebp/src/webp/format_constants.h
index 329fc8a3b0..eca6981a47 100644
--- a/thirdparty/libwebp/src/webp/format_constants.h
+++ b/thirdparty/libwebp/src/webp/format_constants.h
@@ -84,4 +84,4 @@ typedef enum {
// overflow a uint32_t.
#define MAX_CHUNK_PAYLOAD (~0U - CHUNK_HEADER_SIZE - 1)
-#endif /* WEBP_WEBP_FORMAT_CONSTANTS_H_ */
+#endif // WEBP_WEBP_FORMAT_CONSTANTS_H_
diff --git a/thirdparty/libwebp/src/webp/mux.h b/thirdparty/libwebp/src/webp/mux.h
index 28bb4a41c9..66096a92e0 100644
--- a/thirdparty/libwebp/src/webp/mux.h
+++ b/thirdparty/libwebp/src/webp/mux.h
@@ -527,4 +527,4 @@ WEBP_EXTERN void WebPAnimEncoderDelete(WebPAnimEncoder* enc);
} // extern "C"
#endif
-#endif /* WEBP_WEBP_MUX_H_ */
+#endif // WEBP_WEBP_MUX_H_
diff --git a/thirdparty/libwebp/src/webp/mux_types.h b/thirdparty/libwebp/src/webp/mux_types.h
index b37e2c67aa..ceea77dfc6 100644
--- a/thirdparty/libwebp/src/webp/mux_types.h
+++ b/thirdparty/libwebp/src/webp/mux_types.h
@@ -95,4 +95,4 @@ static WEBP_INLINE int WebPDataCopy(const WebPData* src, WebPData* dst) {
} // extern "C"
#endif
-#endif /* WEBP_WEBP_MUX_TYPES_H_ */
+#endif // WEBP_WEBP_MUX_TYPES_H_
diff --git a/thirdparty/libwebp/src/webp/types.h b/thirdparty/libwebp/src/webp/types.h
index 989a763f0d..0ce2622e41 100644
--- a/thirdparty/libwebp/src/webp/types.h
+++ b/thirdparty/libwebp/src/webp/types.h
@@ -49,4 +49,4 @@ typedef long long int int64_t;
// Macro to check ABI compatibility (same major revision number)
#define WEBP_ABI_IS_INCOMPATIBLE(a, b) (((a) >> 8) != ((b) >> 8))
-#endif /* WEBP_WEBP_TYPES_H_ */
+#endif // WEBP_WEBP_TYPES_H_
diff --git a/thirdparty/tinyexr/tinyexr.h b/thirdparty/tinyexr/tinyexr.h
index 990c8ee142..b3a7ee00c2 100644
--- a/thirdparty/tinyexr/tinyexr.h
+++ b/thirdparty/tinyexr/tinyexr.h
@@ -116,6 +116,8 @@ extern "C" {
#define TINYEXR_ERROR_UNSUPPORTED_FORMAT (-7)
#define TINYEXR_ERROR_INVALID_HEADER (-8)
#define TINYEXR_ERROR_UNSUPPORTED_FEATURE (-9)
+#define TINYEXR_ERROR_CANT_WRITE_FILE (-10)
+#define TINYEXR_ERROR_SERIALZATION_FAILED (-11)
// @note { OpenEXR file format: http://www.openexr.com/openexrfilelayout.pdf }
@@ -279,9 +281,12 @@ extern int LoadEXR(float **out_rgba, int *width, int *height,
// Save image as fp16(HALF) format when `save_as_fp16` is positive non-zero
// value.
// Save image as fp32(FLOAT) format when `save_as_fp16` is 0.
+// Use ZIP compression by default.
+// Returns negative value and may set error string in `err` when there's an
+// error
extern int SaveEXR(const float *data, const int width, const int height,
const int components, const int save_as_fp16,
- const char *filename);
+ const char *filename, const char **err);
// Initialize EXRHeader struct
extern void InitEXRHeader(EXRHeader *exr_header);
@@ -400,9 +405,9 @@ extern int SaveEXRImageToFile(const EXRImage *image,
// Saves multi-channel, single-frame OpenEXR image to a memory.
// Image is compressed using EXRImage.compression value.
-// Return the number of bytes if succes.
-// Returns negative value and may set error string in `err` when there's an
-// error
+// Return the number of bytes if success.
+// Return zero and will set error string in `err` when there's an
+// error.
// When there was an error message, Application must free `err` with
// FreeEXRErrorMessage()
extern size_t SaveEXRImageToMemory(const EXRImage *image,
@@ -524,15 +529,23 @@ namespace miniz {
#if __has_warning("-Wcomma")
#pragma clang diagnostic ignored "-Wcomma"
#endif
+
#if __has_warning("-Wmacro-redefined")
#pragma clang diagnostic ignored "-Wmacro-redefined"
#endif
+
#if __has_warning("-Wcast-qual")
#pragma clang diagnostic ignored "-Wcast-qual"
#endif
+
#if __has_warning("-Wzero-as-null-pointer-constant")
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif
+
+#if __has_warning("-Wtautological-constant-compare")
+#pragma clang diagnostic ignored "-Wtautological-constant-compare"
+#endif
+
#endif
/* miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP
@@ -2518,10 +2531,10 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r,
tinfl_status status = TINFL_STATUS_FAILED;
mz_uint32 num_bits, dist, counter, num_extra;
tinfl_bit_buf_t bit_buf;
- const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end =
- pIn_buf_next + *pIn_buf_size;
- mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end =
- pOut_buf_next + *pOut_buf_size;
+ const mz_uint8 *pIn_buf_cur = pIn_buf_next,
+ *const pIn_buf_end = pIn_buf_next + *pIn_buf_size;
+ mz_uint8 *pOut_buf_cur = pOut_buf_next,
+ *const pOut_buf_end = pOut_buf_next + *pOut_buf_size;
size_t out_buf_size_mask =
(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)
? (size_t)-1
@@ -2938,9 +2951,8 @@ void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len,
tinfl_status status = tinfl_decompress(
&decomp, (const mz_uint8 *)pSrc_buf + src_buf_ofs, &src_buf_size,
(mz_uint8 *)pBuf, pBuf ? (mz_uint8 *)pBuf + *pOut_len : NULL,
- &dst_buf_size,
- (flags & ~TINFL_FLAG_HAS_MORE_INPUT) |
- TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);
+ &dst_buf_size, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) |
+ TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);
if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT)) {
MZ_FREE(pBuf);
*pOut_len = 0;
@@ -2993,8 +3005,9 @@ int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size,
tinfl_status status =
tinfl_decompress(&decomp, (const mz_uint8 *)pIn_buf + in_buf_ofs,
&in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size,
- (flags & ~(TINFL_FLAG_HAS_MORE_INPUT |
- TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)));
+ (flags &
+ ~(TINFL_FLAG_HAS_MORE_INPUT |
+ TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)));
in_buf_ofs += in_buf_size;
if ((dst_buf_size) &&
(!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user)))
@@ -3119,9 +3132,7 @@ static const mz_uint8 s_tdefl_large_dist_extra[128] = {
// Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted
// values.
-typedef struct {
- mz_uint16 m_key, m_sym_index;
-} tdefl_sym_freq;
+typedef struct { mz_uint16 m_key, m_sym_index; } tdefl_sym_freq;
static tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms,
tdefl_sym_freq *pSyms0,
tdefl_sym_freq *pSyms1) {
@@ -5265,10 +5276,9 @@ mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index,
n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS);
n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1);
pStat->m_comment_size = n;
- memcpy(pStat->m_comment,
- p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
- MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
- MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS),
+ memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
+ MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
+ MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS),
n);
pStat->m_comment[n] = '\0';
@@ -10087,9 +10097,10 @@ static bool DecodePixelData(/* out */ unsigned char **out_images,
unsigned short *outLine =
reinterpret_cast<unsigned short *>(out_images[c]);
if (line_order == 0) {
- outLine += (y + v) * x_stride;
+ outLine += (size_t(y) + v) * size_t(x_stride);
} else {
- outLine += (height - 1 - (y + v)) * x_stride;
+ outLine +=
+ (size_t(height) - 1 - (size_t(y) + v)) * size_t(x_stride);
}
for (int u = 0; u < width; u++) {
@@ -10105,9 +10116,10 @@ static bool DecodePixelData(/* out */ unsigned char **out_images,
} else if (requested_pixel_types[c] == TINYEXR_PIXELTYPE_FLOAT) {
float *outLine = reinterpret_cast<float *>(out_images[c]);
if (line_order == 0) {
- outLine += (y + v) * x_stride;
+ outLine += (size_t(y) + v) * size_t(x_stride);
} else {
- outLine += (height - 1 - (y + v)) * x_stride;
+ outLine +=
+ (size_t(height) - 1 - (size_t(y) + v)) * size_t(x_stride);
}
if (reinterpret_cast<const unsigned char *>(line_ptr + width) >
@@ -10140,9 +10152,10 @@ static bool DecodePixelData(/* out */ unsigned char **out_images,
float *outLine = reinterpret_cast<float *>(out_images[c]);
if (line_order == 0) {
- outLine += (y + v) * x_stride;
+ outLine += (size_t(y) + v) * size_t(x_stride);
} else {
- outLine += (height - 1 - (y + v)) * x_stride;
+ outLine +=
+ (size_t(height) - 1 - (size_t(y) + v)) * size_t(x_stride);
}
if (reinterpret_cast<const unsigned char *>(line_ptr + width) >
@@ -10167,9 +10180,10 @@ static bool DecodePixelData(/* out */ unsigned char **out_images,
unsigned int *outLine =
reinterpret_cast<unsigned int *>(out_images[c]);
if (line_order == 0) {
- outLine += (y + v) * x_stride;
+ outLine += (size_t(y) + v) * size_t(x_stride);
} else {
- outLine += (height - 1 - (y + v)) * x_stride;
+ outLine +=
+ (size_t(height) - 1 - (size_t(y) + v)) * size_t(x_stride);
}
for (int u = 0; u < width; u++) {
@@ -11133,21 +11147,53 @@ int LoadEXR(float **out_rgba, int *width, int *height, const char *filename,
}
}
- if ((idxA == 0) && (idxR == -1) && (idxG == -1) && (idxB == -1)) {
- // Alpha channel only.
+ if (exr_header.num_channels == 1) {
+ // Grayscale channel only.
- if (exr_header.tiled) {
- // todo.implement this
- }
(*out_rgba) = reinterpret_cast<float *>(
malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) *
static_cast<size_t>(exr_image.height)));
- for (int i = 0; i < exr_image.width * exr_image.height; i++) {
- const float val = reinterpret_cast<float **>(exr_image.images)[0][i];
- (*out_rgba)[4 * i + 0] = val;
- (*out_rgba)[4 * i + 1] = val;
- (*out_rgba)[4 * i + 2] = val;
- (*out_rgba)[4 * i + 3] = val;
+
+ if (exr_header.tiled) {
+ // todo.implement this
+
+ for (int it = 0; it < exr_image.num_tiles; it++) {
+ for (int j = 0; j < exr_header.tile_size_y; j++) {
+ for (int i = 0; i < exr_header.tile_size_x; i++) {
+ const int ii =
+ exr_image.tiles[it].offset_x * exr_header.tile_size_x + i;
+ const int jj =
+ exr_image.tiles[it].offset_y * exr_header.tile_size_y + j;
+ const int idx = ii + jj * exr_image.width;
+
+ // out of region check.
+ if (ii >= exr_image.width) {
+ continue;
+ }
+ if (jj >= exr_image.height) {
+ continue;
+ }
+ const int srcIdx = i + j * exr_header.tile_size_x;
+ unsigned char **src = exr_image.tiles[it].images;
+ (*out_rgba)[4 * idx + 0] =
+ reinterpret_cast<float **>(src)[0][srcIdx];
+ (*out_rgba)[4 * idx + 1] =
+ reinterpret_cast<float **>(src)[0][srcIdx];
+ (*out_rgba)[4 * idx + 2] =
+ reinterpret_cast<float **>(src)[0][srcIdx];
+ (*out_rgba)[4 * idx + 3] =
+ reinterpret_cast<float **>(src)[0][srcIdx];
+ }
+ }
+ }
+ } else {
+ for (int i = 0; i < exr_image.width * exr_image.height; i++) {
+ const float val = reinterpret_cast<float **>(exr_image.images)[0][i];
+ (*out_rgba)[4 * i + 0] = val;
+ (*out_rgba)[4 * i + 1] = val;
+ (*out_rgba)[4 * i + 2] = val;
+ (*out_rgba)[4 * i + 3] = val;
+ }
}
} else {
// Assume RGB(A)
@@ -11179,7 +11225,7 @@ int LoadEXR(float **out_rgba, int *width, int *height, const char *filename,
static_cast<size_t>(exr_image.height)));
if (exr_header.tiled) {
for (int it = 0; it < exr_image.num_tiles; it++) {
- for (int j = 0; j < exr_header.tile_size_y; j++)
+ for (int j = 0; j < exr_header.tile_size_y; j++) {
for (int i = 0; i < exr_header.tile_size_x; i++) {
const int ii =
exr_image.tiles[it].offset_x * exr_header.tile_size_x + i;
@@ -11209,6 +11255,7 @@ int LoadEXR(float **out_rgba, int *width, int *height, const char *filename,
(*out_rgba)[4 * idx + 3] = 1.0;
}
}
+ }
}
} else {
for (int i = 0; i < exr_image.width * exr_image.height; i++) {
@@ -11356,18 +11403,53 @@ int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) *
static_cast<size_t>(exr_image.height)));
- for (int i = 0; i < exr_image.width * exr_image.height; i++) {
- (*out_rgba)[4 * i + 0] =
- reinterpret_cast<float **>(exr_image.images)[idxR][i];
- (*out_rgba)[4 * i + 1] =
- reinterpret_cast<float **>(exr_image.images)[idxG][i];
- (*out_rgba)[4 * i + 2] =
- reinterpret_cast<float **>(exr_image.images)[idxB][i];
- if (idxA != -1) {
- (*out_rgba)[4 * i + 3] =
- reinterpret_cast<float **>(exr_image.images)[idxA][i];
- } else {
- (*out_rgba)[4 * i + 3] = 1.0;
+ if (exr_header.tiled) {
+ for (int it = 0; it < exr_image.num_tiles; it++) {
+ for (int j = 0; j < exr_header.tile_size_y; j++)
+ for (int i = 0; i < exr_header.tile_size_x; i++) {
+ const int ii =
+ exr_image.tiles[it].offset_x * exr_header.tile_size_x + i;
+ const int jj =
+ exr_image.tiles[it].offset_y * exr_header.tile_size_y + j;
+ const int idx = ii + jj * exr_image.width;
+
+ // out of region check.
+ if (ii >= exr_image.width) {
+ continue;
+ }
+ if (jj >= exr_image.height) {
+ continue;
+ }
+ const int srcIdx = i + j * exr_header.tile_size_x;
+ unsigned char **src = exr_image.tiles[it].images;
+ (*out_rgba)[4 * idx + 0] =
+ reinterpret_cast<float **>(src)[idxR][srcIdx];
+ (*out_rgba)[4 * idx + 1] =
+ reinterpret_cast<float **>(src)[idxG][srcIdx];
+ (*out_rgba)[4 * idx + 2] =
+ reinterpret_cast<float **>(src)[idxB][srcIdx];
+ if (idxA != -1) {
+ (*out_rgba)[4 * idx + 3] =
+ reinterpret_cast<float **>(src)[idxA][srcIdx];
+ } else {
+ (*out_rgba)[4 * idx + 3] = 1.0;
+ }
+ }
+ }
+ } else {
+ for (int i = 0; i < exr_image.width * exr_image.height; i++) {
+ (*out_rgba)[4 * i + 0] =
+ reinterpret_cast<float **>(exr_image.images)[idxR][i];
+ (*out_rgba)[4 * i + 1] =
+ reinterpret_cast<float **>(exr_image.images)[idxG][i];
+ (*out_rgba)[4 * i + 2] =
+ reinterpret_cast<float **>(exr_image.images)[idxB][i];
+ if (idxA != -1) {
+ (*out_rgba)[4 * i + 3] =
+ reinterpret_cast<float **>(exr_image.images)[idxA][i];
+ } else {
+ (*out_rgba)[4 * i + 3] = 1.0;
+ }
}
}
@@ -11452,7 +11534,7 @@ size_t SaveEXRImageToMemory(const EXRImage *exr_image,
if (exr_image == NULL || memory_out == NULL ||
exr_header->compression_type < 0) {
tinyexr::SetErrorMessage("Invalid argument for SaveEXRImageToMemory", err);
- return 0; // @fixme
+ return 0;
}
#if !TINYEXR_USE_PIZ
@@ -11623,8 +11705,6 @@ size_t SaveEXRImageToMemory(const EXRImage *exr_image,
sizeof(
tinyexr::tinyexr_int64); // sizeof(header) + sizeof(offsetTable)
- std::vector<unsigned char> data;
-
std::vector<std::vector<unsigned char> > data_list(
static_cast<size_t>(num_blocks));
std::vector<size_t> channel_offset_list(
@@ -11863,9 +11943,9 @@ size_t SaveEXRImageToMemory(const EXRImage *exr_image,
} else if (exr_header->compression_type == TINYEXR_COMPRESSIONTYPE_PIZ) {
#if TINYEXR_USE_PIZ
unsigned int bufLen =
- 1024 + static_cast<unsigned int>(
- 1.2 * static_cast<unsigned int>(
- buf.size())); // @fixme { compute good bound. }
+ 8192 + static_cast<unsigned int>(
+ 2 * static_cast<unsigned int>(
+ buf.size())); // @fixme { compute good bound. }
std::vector<unsigned char> block(bufLen);
unsigned int outSize = static_cast<unsigned int>(block.size());
@@ -11924,13 +12004,12 @@ size_t SaveEXRImageToMemory(const EXRImage *exr_image,
} // omp parallel
for (size_t i = 0; i < static_cast<size_t>(num_blocks); i++) {
- data.insert(data.end(), data_list[i].begin(), data_list[i].end());
-
offsets[i] = offset;
tinyexr::swap8(reinterpret_cast<tinyexr::tinyexr_uint64 *>(&offsets[i]));
offset += data_list[i].size();
}
+ size_t totalSize = static_cast<size_t>(offset);
{
memory.insert(
memory.end(), reinterpret_cast<unsigned char *>(&offsets.at(0)),
@@ -11938,14 +12017,21 @@ size_t SaveEXRImageToMemory(const EXRImage *exr_image,
sizeof(tinyexr::tinyexr_uint64) * static_cast<size_t>(num_blocks));
}
- { memory.insert(memory.end(), data.begin(), data.end()); }
-
- assert(memory.size() > 0);
+ if ( memory.size() == 0 ) {
+ tinyexr::SetErrorMessage("Output memory size is zero", err);
+ return 0;
+ }
- (*memory_out) = static_cast<unsigned char *>(malloc(memory.size()));
+ (*memory_out) = static_cast<unsigned char *>(malloc(totalSize));
memcpy((*memory_out), &memory.at(0), memory.size());
+ unsigned char *memory_ptr = *memory_out + memory.size();
- return memory.size(); // OK
+ for (size_t i = 0; i < static_cast<size_t>(num_blocks); i++) {
+ memcpy(memory_ptr, &data_list[i].at(0), data_list[i].size());
+ memory_ptr += data_list[i].size();
+ }
+
+ return totalSize; // OK
}
int SaveEXRImageToFile(const EXRImage *exr_image, const EXRHeader *exr_header,
@@ -11960,7 +12046,7 @@ int SaveEXRImageToFile(const EXRImage *exr_image, const EXRHeader *exr_header,
if (exr_header->compression_type == TINYEXR_COMPRESSIONTYPE_PIZ) {
tinyexr::SetErrorMessage("PIZ compression is not supported in this build",
err);
- return 0;
+ return TINYEXR_ERROR_UNSUPPORTED_FEATURE;
}
#endif
@@ -11968,7 +12054,7 @@ int SaveEXRImageToFile(const EXRImage *exr_image, const EXRHeader *exr_header,
if (exr_header->compression_type == TINYEXR_COMPRESSIONTYPE_ZFP) {
tinyexr::SetErrorMessage("ZFP compression is not supported in this build",
err);
- return 0;
+ return TINYEXR_ERROR_UNSUPPORTED_FEATURE;
}
#endif
@@ -11980,19 +12066,28 @@ int SaveEXRImageToFile(const EXRImage *exr_image, const EXRHeader *exr_header,
#endif
if (!fp) {
tinyexr::SetErrorMessage("Cannot write a file", err);
- return TINYEXR_ERROR_CANT_OPEN_FILE;
+ return TINYEXR_ERROR_CANT_WRITE_FILE;
}
unsigned char *mem = NULL;
size_t mem_size = SaveEXRImageToMemory(exr_image, exr_header, &mem, err);
+ if (mem_size == 0) {
+ return TINYEXR_ERROR_SERIALZATION_FAILED;
+ }
+ size_t written_size = 0;
if ((mem_size > 0) && mem) {
- fwrite(mem, 1, mem_size, fp);
+ written_size = fwrite(mem, 1, mem_size, fp);
}
free(mem);
fclose(fp);
+ if (written_size != mem_size) {
+ tinyexr::SetErrorMessage("Cannot write a file", err);
+ return TINYEXR_ERROR_CANT_WRITE_FILE;
+ }
+
return TINYEXR_SUCCESS;
}
@@ -12861,20 +12956,27 @@ int LoadEXRMultipartImageFromFile(EXRImage *exr_images,
}
int SaveEXR(const float *data, int width, int height, int components,
- const int save_as_fp16, const char *outfilename) {
+ const int save_as_fp16, const char *outfilename, const char **err) {
if ((components == 1) || components == 3 || components == 4) {
// OK
} else {
+ std::stringstream ss;
+ ss << "Unsupported component value : " << components << std::endl;
+
+ tinyexr::SetErrorMessage(ss.str(), err);
return TINYEXR_ERROR_INVALID_ARGUMENT;
}
- // Assume at least 16x16 pixels.
- if (width < 16) return TINYEXR_ERROR_INVALID_ARGUMENT;
- if (height < 16) return TINYEXR_ERROR_INVALID_ARGUMENT;
-
EXRHeader header;
InitEXRHeader(&header);
+ if ((width < 16) && (height < 16)) {
+ // No compression for small image.
+ header.compression_type = TINYEXR_COMPRESSIONTYPE_NONE;
+ } else {
+ header.compression_type = TINYEXR_COMPRESSIONTYPE_ZIP;
+ }
+
EXRImage image;
InitEXRImage(&image);
@@ -12980,8 +13082,7 @@ int SaveEXR(const float *data, int width, int height, int components,
}
}
- const char *err;
- int ret = SaveEXRImageToFile(&image, &header, outfilename, &err);
+ int ret = SaveEXRImageToFile(&image, &header, outfilename, err);
if (ret != TINYEXR_SUCCESS) {
return ret;
}